1. 程式人生 > >AngularJs---JSONP跨域訪問資料傳輸

AngularJs---JSONP跨域訪問資料傳輸

Jquery中jsonp的使用

 
myUrl = "http://localhost:8090/api/test";

$.ajax({
  type:"GET",
  url:myUrl,
  dataType:"jsonp",
  jsonp:"callback",
  jsonpCallback:"jsonpCallback",
  success:function(data){
    alert(data.msg);
  }
});


function jsonpCallback(data){
  alert(data);
}
1.jsonp只能使用get請求,解決同源問題,返回javascript程式碼,因為請求javascript檔案是沒有同源問題的。
2.當請求資料型別為jsonp時,會將callback=jsonpCallback加在url上,http://localhost:8090/api/testcallback=jsonpCallback
3.前臺javascript中定義jsonpCallback函式,此函式必須定義在window下,也就是全域性的函式,否則找不到。
4.後臺獲取請求的callback引數值jsonpCallback,返回字串"jsonpCallback(result)",result為返回結果。
5.請求返回的是script tag,首先會呼叫jsonpCallback函式,不管是否找到該函式,都會呼叫success函式。
6.如果沒有定義jsonp和jsonpCallback,jsonp預設為"callback",jsonpCallback會是Jquery自動生成的函式名。
複製程式碼
 


angularJS中jsonp的使用


myUrl = "http://localhost:8090/api/test?callback=JSON_CALLBACK";

$http.jsonp(myUrl).success(
  function(data){
    alert(data);
  }
);
1.angularJS中使用$http.jsonp函式
2.指定callback和回撥函式名,函式名為JSON_CALLBACK時,會呼叫success回撥函式,JSON_CALLBACK必須全為大寫。
3.也可以指定其它回撥函式,但必須是定義在window下的全域性函式。
4.url中必須加上callback
5.當callback為JSON_CALLBACK時,只會呼叫success,即使window中有JSON_CALLBACK函式,也不會呼叫該函式。