2011-05-11 59 views
0

我正在使用以下代碼以JSONP格式檢索數據。我需要使用它,所以如果沒有數據返回,我可以標記錯誤。我使用的是jQuery的ajax(),但它總是返回404頁成功,所以我需要在Google Code上使用jquery-jsonp jQuery插件進行錯誤處理。爲什麼我會一直收到這個JSONP feed的「未定義」錯誤?

我借用了jQuery ajax (jsonp) ignores a timeout and doesn't fire the error event上的示例中的代碼,但似乎無法讓它與我的JSON一起工作,該JSON作爲MIME類型「application/json」從其他服務器發送。

$(function(){ 
    var jsonFeed = "http://othersite.com/feed.json"; 

    $.jsonp({ 
     url: jsonFeed, 
     dataType: "jsonp", 
     timeout: 5000, 
     success: function(data, status){ 
      $.each(data.items, function(i,item){ 
       console.log("Title: " + item.title); 

       if (i == 9) return false; 
      }); 
     }, 
     error: function(XHR, textStatus, errorThrown){ 
      console.log("Error Status: " + textStatus); 
      console.log("Error Thrown: " + errorThrown); 
     } 
    }); 
}); 

這裏是我的JSON的例子:

任何人都可以發現問題:

[{ 「我的標題」, 「標題」}]?

+1

從服務器返回的內容是JSON,而不是JSONP。對於JSONP,它應該看起來像這樣:'methodName([{「title」:「My Title」}])'其中'methodName'必須作爲參數傳遞。爲此,服務器必須支持此協議。你確定遠程服務器支持它嗎? – 2011-05-11 14:49:16

+0

你所描述的是我遇到的問題。我正在使用http://wordpress.org/extend/plugins/feed-json/並且沒有添加?callback = methodName。現在,我應該怎麼做,並且使用上面each()中的數據做些什麼? – Zoolander 2011-05-11 15:01:03

回答

1

您確定「othersite.com」實際上支持JSONP嗎?客戶端無法將JSON轉換爲JSONP。服務器需要支持它使用回調函數來封裝內容。

+0

是的,我正在使用WordPress插件Feed JSON:http://wordpress.org/extend/plugins/feed-json/ – Zoolander 2011-05-11 14:50:06

+2

請確保您的網址是http://othersite.com/feed.json?callback= ? – 2011-05-11 14:51:11

+0

我認爲這是問題(不使用回調=)。現在我怎麼檢索item.title,因爲數據被封裝在callback()中? – Zoolander 2011-05-11 14:52:44

相關問題