解决ajax跨域问题

时间:2022-08-29 09:51:29

解决ajax跨域问题

 

JQuery ajax支持get方式的跨域,采用了jsonp来完成。完成跨域请求的有两种方式实现。一种是使用Jquery ajax最底层的Api实现跨域的请求,而另一种则是JQuery ajax的高级封装。

方式1:使用Jquery ajax方式。

解决ajax跨域问题
解决ajax跨域问题
 1 $.ajax({
 2     url:'http://www.mysite.com/demo.do',  // 跨域URL
 3     type:'get',
 4     async:false,
 5     dataType:'jsonp',
 6     jsonp: 'jsoncallback', //默认callback
 7     data: mydata, 
 8     time:5000,
 9     beforeSend:function(){
10      //jsonp 方式此方法不被触发。原因可能是dataType如果指定为jsonp的话,就已经不是ajax事件了
11     },
12     success:function(data){
13         //客户端jquery预先定义好的callback函数,成功获取跨域服务器上的json数据后,会动态执行这个callback函数 
14        if(json.actionErrors.length!=0){ 
15             alert(json.actionErrors); 
16         } 
17         genDynamicContent(qsData,type,json); 
18     },
19     complete: function(XMLHttpRequest, textStatus){ 
20           $.unblockUI({ fadeOut: 10 }); 
21     }, 
22     error: function(xhr){ 
23           //jsonp 方式此方法不被触发
24           //请求出错处理 
25           alert("请求出错(请检查相关度网络状况.)"); 
26      } 
27     
28 });
解决ajax跨域问题

方式2:使用JQuery getJSO方式

解决ajax跨域问题
1 1   $.getJSON("请求的路径=?参数", 
2 2         function(json){ //返回的结果
3 3           if(json.属性名==值){ 
4 4             // 执行代码 
5 5         } 
6 6  });

Jsonp的基本原理就是:动态的添加一个一致的。Jsonp是一种脚本的注入(Script InJection)行为,所以,它会有一定的安全性的问题。

同时需要注意Jsonp是不支持post跨域请求的。