【发布时间】:2011-12-28 15:04:44
【问题描述】:
我正在尝试使用 for 循环来循环遍历 URL 数组并将它们用于 ajax 调用。在 ajax 调用之外,i 正确更改值,但是当我尝试从调用内部访问它时,它总是返回2。它正确循环但具有相同的值,而不是循环通过0, 1 等。
var i = 0;
for(i = 0; i <= 1; ++i) {
console.log("Value outside of call = " + i);
$.ajax({
url : urls[i],
dataType : 'jsonp',
timeout : 3000,
count : 0,
success : function(data) {
console.log("Value inside of call = " + i);
shotInfo[i] = data;
},
error : function() {
}
})
}
我也尝试过使用while 循环,但效果相同。
【问题讨论】:
-
@TomalakGeret'kal 不管怎样让你睡得好,这很苛刻。这家伙可能是新来的。我猜你从来没有犯过愚蠢的错误。刚看,他14岁。至于投赞成票,我同意,但我不会费心为粗鲁的人投反对票。
-
我做了研究,包括 SO 和网络,抱歉。我很想读一本书,你会推荐什么?
-
如果我们什么都不放在心上,更专业一点,那就太好了。这是一个初学者的问题,我们必须帮助初学者理解。 @ZenshanA 您可以从记录器中轻松理解。在 AJAX 之外的所有日志都打印出来之后,您可以看到 AJAX 中的日志。
-
在这里对您有帮助的是理解变量作用域,这是初学者的概念,但我看到这种混淆经常出现在 ajax 和异步调用中。请记住,您的
success选项是callback,它不会与循环一起执行。 -
@hop 的最后一条评论就是您要查找的内容。您可以将索引添加为查询字符串参数并将其作为数据的一部分返回。
标签: javascript variables jquery for-loop