1. 程式人生 > >jsonp 實現原理與jquery例項

jsonp 實現原理與jquery例項

前端實現

為了實現跨域請求,jsonp使用script標籤進行請求。後臺返回的資料並不是一個純粹的json資料,實際上是一個函式呼叫。

以jquery為例,

jquery把jsonp封裝到ajax中,實際上並不是真正的ajax請求,只是方便呼叫。

增加兩個屬性jsonp, jsonpCallback,這兩個屬性jquery會設定預設值

jsonp預設值為callback, jsonpCallback預設值是一個動態的隨機字串。再下發請求時,會把這兩個值追加到url的後面,比如你的ajax程式碼如下:

$.ajax({

url: "http://yourdomain/jsonp/data.json",

dataType:'jsonp',

jsonp: 'callback',

jsonpCallback: 'onGetJsonpData'

}

瀏覽器傳送請求的實際url為:http://yourdomain/jsonp/data.json?callback=onGetJsonpData。其中callback是jsonp後面的值,onGetJsonpData是jsonpCallback的值

後臺實現

後臺程式碼的處理與普通的json資料也是有區別的,需要獲取這兩個引數,返回如下格式的資料:

onGetJsonpData({data:'test'});

其中onGetJsonpData是從URL引數中獲取的callback的值

實際上就是呼叫一個JS函式,把取到的資料傳給這個函式,所以說,這裡的資料可以是任意格式的資料,但一般使用json資料更靈活,更易被接受

詳細的例子網上有很多,就不在這裡列舉了