【问题标题】:jQuery object undefinedjQuery 对象未定义
【发布时间】:2009-06-27 18:24:33
【问题描述】:

很抱歉问了一个很明显的问题,我整天都在努力解决这个问题 + 我对 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>

我得到对象 undefined var name, i = 0, length = object.length;来自萤火虫 - 任何人都可以帮助我吗?

【问题讨论】:

    标签: jquery json


    【解决方案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");
    

    【讨论】:

    • 不一定。 jQuery 的 getJSON 将取代 ?使用正确的回调并为您创建一个脚本元素。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-01-30
      • 2011-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-04
      相关资源
      最近更新 更多