这是我写的一个功能需要用到的跨域问题。这里做个总结
使用的是Jquery的ajax,重点在红色部分的参数设定
function enterInto(address, uri,query){
var url = address+uri+"?"+query;$.ajax({
type: 'POST',
url: url,
dataType: 'jsonp',//返回为jsonp,关于jsonp这里不介绍
jsonp:"jsoncallback",//jsonp添加到url后的参数名称
jsonpCallback:"success_jsonpCallback",//jsonp添加到url后的参数名称的值
success: function(data){
var status = data.status;
var intoUrl = address+"/"+data.url;
if(status == 0){
window.location.href=intoUrl;
}else if(status == 1){
alert("请联系管理员进行注册或者授权");
}else{
alert("LenovoID为空");
}
}
});
}
此请求的url后会自动添加这样的参数:&jsoncallback=success_jsonpCallback&_=1463479006057,其中jsoncallback是你ajax参数的jsonp定义的名称,
jsonpCallback定义的名称为jsonp定义的名称的值。
后台Java代码:
public void checkLenovoID(HttpServletRequest request, HttpServletResponse response) {String jsonpCallBack = request.getParameter("jsoncallback");
String json = null;
json="{'status':2}";
try {
response.getWriter().write(jsonpCallBack+"("+JSONObject.fromObject(json).toString()+")");
} catch (IOException e1) {
e1.printStackTrace();
}
}
这里的返回值为:request.getParameter("ajax中jsonp参数定义的名称")+"("+json字符串+")";
此方式便可做到Jquery ajax的跨域访问。