jQuery对象未定义

时间:2009-06-27 18:24:33

标签: jquery json

对于询问可能是一个非常明显的问题的道歉,我一整天都在反对这一点+我对JQuery和JavaScript一般都是新手。

我正在运行以下内容: -

<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,length = object.length;来自萤火虫 - 有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:2)

通过查看JSON响应,data.query.results.row未定义(尽管data.query.results不是)。所以你要循环一个未定义的属性。

您可以在回调中使用console.log(data)来阅读回复的属性。然后,download and install FireBug用于Firefox,如果你还没有这样做并检查控制台。

答案 1 :(得分: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");