2013-01-14 46 views
3

在我看到.getJSON()的格式很多示例代碼是一樣的東西.getJSON()中jsoncallback參數的用法是什麼?

$.getJSON("url?jsoncallback=?", function(data){ 
...} 

而在後端的響應是這樣寫

$response = $_GET["jsoncallback"]."(".json_encode($orders).")"; 
echo $reponse 

我刪除「?jsoncallback =?」從url和$ _GET [「jsoncallback」]和後端的方括號,似乎一切仍然有效。那麼,那個jsoncallback的東西有什麼用呢?

回答

2

如果沒有jsoncallback=?也將只是不正常的JSON請求不JSONP *。您可以在自己的服務器或發送CORS標頭的服務器上正常執行JSON請求。


*忘記JSONP,這是插入文檔中,從國外的服務器,但使用相同的授權爲自己的腳本運行的代碼腳本元素一個奇特的名字。該$_GET["jsoncallback"],使得它的JavaScript函數調用是這樣的:

fn({"data": "value"}); 

這是像<script src="http://foreign.org/data?jsoncallback=fn"></script>的腳本代碼。正如你所看到的,這是Javascript,而不是JSON。有了這個,foreign.org(或者有人在黑客中)可以更改他們的腳本,以便在頁面上進行任何授權操作,所以在使用「JSONP」和更喜歡CORS JSON時要小心。

2

回調名稱用於JSONP,這是一種規避same origin policy的方法。

+0

那麼當我使用.getJSON()時,是否需要添加jsoncallback?由於我沒有看到任何區別,當我使用沒有jsoncallback的.getJSON。 – Tony

相關問題