2009-06-27 85 views
0

我很抱歉詢問可能是一個非常明顯的問題,我一整天都在抨擊我的頭腦+我對JQuery和JavaScript一般都很陌生。jQuery對象undefined

我運行了以下內容: -

<script type="text/javascript"> 
$(function() { 
$.getJSON(
    "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22UTG.L%22)%0A%09%09&format=json&env=http%3A%2F%2Fdatatables.org%2Falltables.env&callback=?", 
    function(data) { 

$.each(data.query.results.row, function(index, item){ 
    $('#quotes') 
    .append(
     $('<p/>') 
     .append($('<span class="left"/>').text(item.symbol)) 
     .append($('<span class="right"/>').text('$'+item.price)) 
    ); 
    }); 

    } 
); 

}); 
</script> 

我得到的對象不確定的變數名稱,I = 0,長度= object.length;從螢火蟲 - 任何人都可以幫助我?

回答

1

JSON結構不知道query.results.row,而是一個query.results.quote。此作品:

console.log(data); 
    var quotes = data.query.results.quote; 
    for(var q in quotes){ 
     $('#quotes') 
     .append(
      $('<p/>') 
      .append($('<span class="left"/>').text(q)) 
      .append($('<span class="right"/>').text('$'+quotes[q])) 
     ); 
     } 
    }); 

您不是調用JSON資源,而是調用JSONP資源。 url的回調參數應該是一個函數名,你應該使用$ .getScript。

myCallback = function(jsonData){...}  
$.getScript("http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22UTG.L%22)%0A%09%09&format=json&env=http%3A%2F%2Fdatatables.org%2Falltables.env&callback=myCallback"); 
+1

不一定。 jQuery的getJSON將取代?用正確的回調函數爲你創建一個腳本元素。 – moff 2009-06-27 18:35:22

2

從查看JSON響應,data.query.results.row未定義(雖然data.query.results不是)。所以你正在循環一個未定義的屬性。

您可以在回調中使用console.log(data)來閱讀回覆的屬性。然後,Firefox的download and install FireBug,如果你還沒有這樣做,並檢查控制檯。