执行此代码时,Firebug显示错误:
$.ajax({
type: "GET",
url: "../foos/.....",
dataType: "json",
success: function (foos, textStatus, XMLHttpRequest) {
for (var i = 0; i <= foos.length; i++) {
var foo = foos[i];
alert(foo.id);
};
}});
Run Code Online (Sandbox Code Playgroud)
json返回带有id和name属性的var"foos".甚至警告foo.id属性,firebug显示错误:
alert(foo.id) //foo is undefined
Run Code Online (Sandbox Code Playgroud)
为什么foo在警报中正确显示时未定义?
编辑:我分配了两次foo,抱歉.但即使我不这样做,我也有同样的萤火虫错误.
你想要哪个foo?数组中的foo(foos)或你在循环中重新声明的foo:
for (var i = 0; i <= foos.length; i++) {
var foo = {
id: "",
name:""
};
var foo = foos[i];
alert(foo.id);
};
Run Code Online (Sandbox Code Playgroud)
但是,至关重要的是,这不是问题所在.问题是你循环0
到foos.length
:
for (var i = 0; i <= foos.length; i++)
Run Code Online (Sandbox Code Playgroud)
这意味着在循环的最后一次迭代中,索引i
比数组的最大索引大1.当您尝试读取此元素时,确实是未定义的.
您应该将循环更改为:
for (var i = 0; i < foos.length; i++)
Run Code Online (Sandbox Code Playgroud)
(当然,摆脱重新定义foo
).
结果应该是:
for (var i = 0; i < foos.length; i++) {
var foo = foos[i];
alert(foo.id);
};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
118 次 |
最近记录: |