ajax跨域请求的问题,JQuery对于Ajax的跨域请求有两类解决方案,不过都是只支持get方式,接下来为大家详细介绍下客户端JQuery.ajax的调用代码
 
 
今天在项目中需要做远程数据加载并渲染页面,直到开发阶段才意识到ajax跨域请求的问题,隐约记得Jquery有提过一个ajax跨域请求的解决方式,于是即刻翻出Jquery的API出来研究,发
JQuery对于Ajax的跨域请求有两类解决方案,不过都是只支持get方式。分别是JQuery的 jquery.ajax jsonp格式和jquery.get 方式。

什么是jsonp格式呢?API原文:如果获取的数据文件存放在远程服务器上(域名不同,也就是跨域获取数据),则需要使用jsonp类型。使用这种类型的话,会创建一个查询字符串参数 callback=? ,这个参数会加在请求的URL后面。服务器端应当在JSON数据前加上回调函数名,以便完成一个有效的JSONP请求。意思就是远程服务端需要对返回的数据做下处理,根据客户端提交的callback的参数,返回一个callback(json)的数据,而客户端将会用 的方式处理返回数据,来对json数据做处理。JQuery.getJSON也同样支持jsonp的数据方式调用。  

1
$.ajax({
 2                     url: path+"/login/login?msg_ 64="+msg_ 64, 3                     async: false, 4 //                    data:{ 5 //                        "formContent":str, 6 //                        "formName":formName, 7 //                        "leixing":leixing 8 //                    }, 9                     dataType:"jsonp",10                     processData: false,     11                     type:"get",12                     success:function(data){13                         data=data[0];14                         alert(data);15                         if(data.status=="0"){16                             $("#usererror").html(data.msg);17                         }else if(data.status=="1"){18                             $("#pwderror").html(data.msg);19                             }20                         else if(data.status=="2"){21                             alert("水电费:"+data.data);22                             addCookie("token",data.data,1);//将令牌存入cookie中23                             window.location.href="edit.html";24                             }25                     }26                 });
 1 @ResponseBody // 将方法的返回结果自动转换为json格式字符串,注意需要导json的包 2     @RequestMapping(value = "/login", method = RequestMethod.GET) 3     public String login(HttpServletRequest request,String msg_ 64) { 4          5          6         String callback=request.getParameter("callback"); 7         //System.out.println(callback); 8                                                                 // 信息 9 //        String msg_context_ 64 = msg_ 64.split(" ")[1];10         String msg = NoteUtil. 64Decode(msg_ 64);// 解密,解密后:username:password11         String name = msg.split(":")[0];12         String pwd = msg.split(":")[1];13         NoteResult result = service.checkUser(name, pwd);14         System.out.println("result  "+result.toString());15         JSONArray json=JSONArray.from (result);16         System.out.println("  "+callback+"("+json+")");17         return callback+"("+json.toString()+")";18     }19     

 

未来星开发团队--狒狒QQ:9715234
收藏 打印