jqueryajax跨域访问解析
程序员文章站
2022-03-13 09:58:48
代码基于 servlet 项目,部署到服务器时碰到跨域问题,请求不到数据,朋友推荐了这种写法,经测试可用。
下面是js代码:
$.ajax({
type:&quo...
代码基于 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=uft-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(); }
上一篇: 我想不出要说什么话