2010-11-30 140 views
1

我有一個web服務在jsonp服務,但由於我是新手,我有檢索數據的困難。這是我的代碼:幫助Jsonp和jQuery

$(document).ready(function(){    
    $.getJSON("http://api.tubeupdates.com/?method=get.status&lines=central,victoria&return=name&jsonp=myData", 
     function myData(result){ 
      $('#status').append(result.name.text); 
     } 
    ); 

}); 

div #status返回空。

你能幫忙嗎?

在此先感謝

莫羅

更新:現在的作品!布特這不是當我試圖循環雖然數據:

$.getJSON("http://api.tubeupdates.com/?method=get.status&lines=central,victoria&return=name&jsonp=?", 
     function (result){ 
       $.each(result.items, function(item){ 
       $('#status').append(item.response.lines[0].name); 
     }); 
    } 
); 

我做錯了什麼?

感謝

+0

您是否驗證過jsonp對象是否正確返回?一個有用的工具稱爲Fiddler。 – 2010-11-30 16:31:47

+0

@Aaron是的,認爲它的確如此。親自嘗試一下:http://api.tubeupdates.com/?method=get.status&lines=central,victoria&return=name&jsonp=myData – Mauro74 2010-11-30 16:34:24

回答

2

jQuery API

如果URL中包含字符串 「回調=?」 (或類似的,由服務器端API定義),請求將被視爲JSONP。

我覺得你的代碼應該是這個樣子

訣竅就是URL的json=?一部分。我認爲jQuery會立即創建一個函數來解析de JSONp數據並將結果提供給您的回調函數。

原諒我的英文:)

更新:訪問必須遍歷result.response.lines回調函數

$.each(result.response.lines, function() { 
    $('#status').append(this.name); 
} 
2

這是URL的輸出中的數據:

myData({"response":{"lines":[{"name":"Central"},{"name":"Victoria"}]}}); 

您可以重新格式化對象以使其更清晰:

{ 
    "response": { 
     "lines": [ 
      {"name":"Central"}, 
      {"name":"Victoria"} 
     ] 
    } 
} 

我看不到屬性text。你大概的意思:

$('#status').append(result.response.lines[0].name); 

更新:這種解決方案並不能完全解決問題。正如接受的答案中所建議的那樣,您需要指示jQuery生成一個隨機函數名稱(您不能提供自己的函數,至少不能使用getJSON)。