jsonp跨域請求簡單說明

1.什么情況下會跨域?

說明:協議名、域名、端口號任何不同,都會跨域
URL 說明 是否允許通信
http://www.a.com/a.jshttp://www.a.com/b.js 同一域名下 允許
http://www.a.com/lab/a.jshttp://www.a.com/script/b.js 同一域名下不同文件夾 允許
http://www.a.com:8080/a.jshttps://www.a.com/b.js 同一域名不同端口 不允許
http://www.a.com/a.jshttps://www.a.com/b.js 同一域名不同協議 不允許
http://www.a.com/a.jshttp://70.32.92.74/b.js 域名和域名對應IP 不允許
http://www.a.com/a.jshttp://script.a.com/b.js 主域相同,子域不同 不允許
http://www.a.com/a.jshttp://a.com/b.js 同一域名,不同二級域名 不允許
http://www.cnblogs.com/a.jshttp://www.a.com/b.js 不同域名 不允許

2.解決方案

$.ajax({
     url: "url地址",
     type: 'get',
     dataType: 'jsonp',
     jsonp: "callback",
     jsonpCallback:"jsonpCallback",//與后臺返回的名稱必須相同
     success: function (data) {
         console.log(data);
     },
     error:function(error){
          console.log(error);
     }
});
function jsonpCallback(data){
        console.log(data);
}

3.解釋說明

1.這里jsonpCallback(可以自定義,但是得和*服務器返回的名稱*保持一致)。
3.所以你只需在定義一個名為jsonpCallback 的function,請求成功后會調用這個函數。
4.jsonpCallback的function,寫在調用ajax的函數之外。
5.后臺返回的數據,要用回調函數包起來。
本來返回的數據:[{name:"zhangsan",age:18}]
使用jsonp請求后:jsonpCallback([{name:"zhangsan",age:18}])
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 國家電網公司企業標準(Q/GDW)- 面向對象的用電信息數據交換協議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 11,184評論 6 13
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,540評論 25 708
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,778評論 18 399
  • 今日堅持了走路,還在走路的過程中想明白了一些事情 170718
    汪汪li閱讀 356評論 0 0