2013-03-11 89 views
2

我有一個基本腳本,用於從JSON提要中提取一些數據並將其返回到警報中。我似乎無法讓我的代碼工作。我正在使用jQuery並調用託管在單獨域上的腳本。即使正確加載jQuery以及所有其他常見問題,我當前的代碼甚至不會顯示警報。jQuery不返回JSON數據

有沒有人有任何想法?

我的代碼是:

$.getJSON("http://www.domain.com/api.php?q=test&callback=?", 
function(data) { 
    alert(data.users[0].firstName); 
}); 
+4

你確定服務器支持JSONP嗎?它看起來像'callback'參數沒有被使用。 – 2013-03-11 22:35:53

+1

你的控制檯有什麼錯誤?如果您遇到了跨同類策略的跨腳本錯誤,您可能需要嘗試指定'jsonp'的$ .ajax'。我不記得確切需要的設置,但看看[** $。ajax()**](http://api.jquery.com/jquery.ajax/)文檔,關於'crossDomain'瞭解詳情。 – Nope 2013-03-11 22:36:13

+0

@ user2036031與你的代碼無關,在瀏覽器中打開url會看到它不返回jsonp ...只有json,這是瀏覽器中跨域的安全限制 – charlietfl 2013-03-11 22:39:36

回答

2

如果我打電話

http://pulse.wixiy.net/playground/search/api.php?q=wixiy&callback=? 

在我的瀏覽器,響應

({"users":[ { "firstName":"Ray", "lastName":"Villalobos", "joined":2012 }, { "firstName":"John", "lastName":"Jones", "joined":2010 } ]}) 

這是一個純粹的JSON字符串,但沒有有效的JSONP響應。對於有效的JSONP響應,您需要調用 JSON字符串 對象文字的函數調用。

jQuery4022random242932crap311({"users":[ { "firstName":"Ray", "lastName":"Villalobos", "joined":2012 }, { "firstName":"John", "lastName":"Jones", "joined":2010 } ]}); 

其中jQuery4022random242932crap311是一些在一個?傳遞作爲參數回調時的jQuery生成名稱。您的服務器需要讀取該參數並創建上述答案。