2009-06-27 22 views
0

おそらく非常に明白な質問をすることをお詫び申し上げます。私はこの一日中私の頭を叩いていました+私は一般的にはJQueryとJavaScriptの新機能です。jQueryオブジェクトが定義されていません

私は次のことを実行している: -

<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> 

私は未定義のVaRのオブジェクト名を取得するには、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

+0

クレイジーjQueryの魔法。 – stefanw

2

JSONレスポンスを見ると、data.query.results.rowは未定義です(ただし、data.query.resultsはありません)。つまり、未定義のプロパティをループしています。

コールバックでconsole.log(data)を使用して応答のプロパティを読み取ることができます。その後、Firefoxの場合はdownload and install FireBugをまだ実行していない場合は、コンソールを確認してください。

関連する問題