ajax跨域請求
阿新 • • 發佈:2017-10-14
在服務器 回調 www 般的 cti lba style s函數 nbsp
跨域請求 首先先了解什麽是跨域?
瀏覽器同源策略:規定瀏覽器只能訪問同源的資源,不能訪問對方的資源。(非授權情況下)
域相同和不同域
滿足同域的條件:同協議 同域名 同端口 如http://www.foo.com/a/ 和http://www.foo.com 同域
與http://www.foo.com不同域,如https://www.foo.com 協議不同;http://www.foo.com:8080 端口不同;http://www.foo 域名不同
ajax跨域
方法論
jsonp,通過設置ajax中的dataType為jsonp demo如下:
$.ajax({ url: "xxx", dataType:"jsonp", jsonp:‘callback‘, jsonpCallback:"successCallback", success:function(json){ var data = eval(json); } });
和一般的ajax請求不同的多了個jsonpCallback ;這個是設置訪問成功後的回調函數的名稱,同時在服務器代碼返回的json數據必須要使用jsonpCallback 設置的函數名括起來如successCallback(json數據)
這樣ajax請求返回數據時才能成功調用success函數(後臺沒設置的話會返回會跑到error裏)。
當然 如果在js 中successCallback(data)函數,會直接調用這個函數,也能獲取到json.
理論
ajax跨域請求