2010-03-09 50 views
2

我需要訪問一個子域的數據我一直在試圖使用jQuery支持的JSONP。我在子域上訪問的數據是一個靜態(重新生成).json文件(http://www.example.com/data.jsonjQuery + JSONP返回數據爲空?

我遇到了「Invalid Label Error」錯誤,並意識到需要將數據包裝在括號中並使用?callback =?

http://www.example.com/data.json?callback=? 

({ 
"items": [ 
{ 
    "url": "http://www.example.com", 
    "id": "2981", 
     "title": "title", 
    "description": "lorem ipsum sit dolor", 
    "start": "00:10:00", 
    "end": "00:20:00" 
} 
}) 


$.getJSON(url, function(data){ 
console.log("json: " + data); 
}); 

結束語數據()擔任我現在可以看到在Firebug淨標籤返回的數據,但$ .getJSON不返回任何東西,我不認爲它觸發。

我錯過了什麼?服務器端需要做些什麼嗎?

謝謝!

+0

當你說它不返回任何東西時,你的意思是什麼? 「數據」參數是否爲空? – Pointy 2010-03-09 13:38:03

回答

0

您從HTTP請求返回的代碼正在被瀏覽器執行。

瀏覽器執行得很好,但它不知道把它放在哪裏,因爲它沒有分配給任何東西。

幸運的是,jQuery足夠智能,讓我們使用一個參數(回調= )供您在代碼中使用。

您的服務器端語言必須添加回調參數,使您的JSON響應看起來像一個JavaScript函數調用:

<?php echo $_GET["callback"]?>({ 
"items": [ 
{ 
    "url": "http://www.example.com", 
    "id": "2981", 
     "title": "title", 
    "description": "lorem ipsum sit dolor", 
    "start": "00:10:00", 
    "end": "00:20:00" 
} 
}) 
+0

那麼在回答之前是否會添加「回調」? – Gregory 2010-03-09 14:17:05

0

如果您嘗試驗證的http://jsonlint.com/你看到有一些例如您的JSON數據錯誤。

您是通過框架還是手動生成JSON數據?

手動JSON數據生成容易出錯。

我希望能幫助你解決你的錯誤。

馬丁