jQuery对象undefined
问题描述:
我很抱歉询问可能是一个非常明显的问题,我一整天都在抨击我的头脑+我对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;从萤火虫 - 任何人都可以帮助我?
答
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");
答
从查看JSON响应,data.query.results.row
未定义(虽然data.query.results
不是)。所以你正在循环一个未定义的属性。
您可以在回调中使用console.log(data)
来阅读回复的属性。然后,Firefox的download and install FireBug,如果你还没有这样做,并检查控制台。
不一定。 jQuery的getJSON将取代?用正确的回调函数为你创建一个脚本元素。 – moff 2009-06-27 18:35:22