2012-03-22 67 views
0

我創建一個PHP文件來返回JSON編碼數據,然後使用getJSON讀它。我試圖從一個來源獲取信息並將其分發到多個區域。我已經更改了內容類型,並允許使用標題進行所有訪問。此時我卡住了。任何想法如何得到這個工作?getJSON由於jquery或php返回null或什麼都沒有?

PHP

header('Cache-Control: no-cache, must-revalidate'); 
header('Content-type: application/json'); 
header('Access-Control-Allow-Origin: *'); 

$search_terms = curlData(); 
$json = array("term" => $search_term); 
echo $_GET['callback'] . "(" . json_encode($json) . ");"; 

輸出這個PHP文件如下:

({"term":"sandwich city"}); 

這裏是jQuery的我使用檢索JSON信息

$.getJSON("http://MYWEBSITE.com/terms.php?callback", function(data) { 
    alert(data); 
}); 

+0

只是一個側面說明,您的警報應該讀作警報(data.term);'。我知道你現在只是在測試,這不會改變你得到的NULL,但是我認爲Id就是這麼說的。 – Dutchie432 2012-03-22 15:55:17

+0

@ Dutchie432感謝提示 – jon 2012-03-22 16:05:03

回答

1

({"term":"sandwich city"});無效JSONP。您錯過了函數名稱

添加=?到您的網址,讓jQuery將自動生成一個函數來處理響應:

http://MYWEBSITE.com/terms.php?callback=? 

documentation

如果URL中包含字符串"callback=?"(或類似的,由服務器端API定義),請求將被視爲JSONP。有關更多詳細信息,請參閱$.ajax()中有關jsonp數據類型的討論。


順便說一句,如果你發送JSONP作爲響應,響應的內容類型設置爲application/json是不正確的。迴應只是JavaScript。

此外,當您指定Access-Control-Allow-Origin標頭時,您根本不必使用JSONP,您可以進行正常的AJAX調用並返回JSON。

+0

感謝所有的信息。我添加了'callback =?'和'alert(data.term)';'現在它可以工作。 – jon 2012-03-22 16:04:43