1. 程式人生 > >ajax跨域請求

ajax跨域請求

在服務器 回調 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跨域請求