JQuery ajax支持get方式的跨域,採用了jsonp來完成。完成跨域請求的有兩種方式實現。一種是使用Jquery ajax最底層的Api實現跨域的請求,而另一種則是JQuery ajax的高級封裝。 方式1:使用Jquery ajax方式。 1 $.ajax({ 2 url:'http:// ...
JQuery ajax支持get方式的跨域,採用了jsonp來完成。完成跨域請求的有兩種方式實現。一種是使用Jquery ajax最底層的Api實現跨域的請求,而另一種則是JQuery ajax的高級封裝。
方式1:使用Jquery 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 });View Code
方式2:使用JQuery getJSO方式
1 1 $.getJSON("請求的路徑=?參數", 2 2 function(json){ //返回的結果 3 3 if(json.屬性名==值){ 4 4 // 執行代碼 5 5 } 6 6 });View Code
Jsonp的基本原理就是:動態的添加一個一致的。Jsonp是一種腳本的註入(Script InJection)行為,所以,它會有一定的安全性的問題。
同時需要註意Jsonp是不支持post跨域請求的。