jqueryajax跨域访问解析
- 作者: 已认证58290779
- 来源: 51数据库
- 2021-08-19
代码基于 servlet 项目,部署到服务器时碰到跨域问题,请求不到数据,朋友推荐了这种写法,经测试可用。
下面是js代码:
$.ajax({
type:"post",
url:"https://域名或ip:端口号/项目名/servlet名称", //url写异域的请求地址
data:{"type":"checkmember","desno":logdesno,"openid":openid,"brand":brandid},
datatype:"jsonp", //加上datatype
jsonp: "callback", //服务端用于接收callback调用的function名的参数
contenttype:"application/json;charset=utf-8",
success:function(data){
if(data.status=="success"){
alert("success");
}else{
alert("当前手机号暂未注册.请前往注册.");
}
console.log(data);
},error:function(data){
console.log("请求异常");
}
});
java 代码:
@override
protected void dopost(httpservletrequest req, httpservletresponse resp) throws ioexception{
resp.setcontenttype("text/json;charset=utf-8");
printwriter out = resp.getwriter();
string type = req.getparameter("type");
map map = null;
string a = null;
//对应 js 中的jsonp:"callback"
string callback = req.getparameter("callback");
if("checkmember".equals(type)){
string desno = req.getparameter("desno");
string brand = req.getparameter("brand");
string openid = req.getparameter("openid");
object[] params = {desno,brand,openid};
map = new hashmap();
int checkresult = 0;
try {
checkresult = cs.checkmember(params);
system.out.println(checkresult);
} catch (sqlexception e) {
e.printstacktrace();
}
}
//封装成 jsonp 的返回格式
jsonobject json = jsonobject.fromobject(map);
a = callback+"(" + json.tostring() + ")";
out.print(a);//输出返回值
out.flush();
out.close();
}
推荐阅读
