我想解决所有循环ajax请求并将'index'传递给它的问题(下面的问题):
for (var index = 0; index < 4; index++) {
$.ajax({
url: 'http://graph.facebook.com/',
dataType: 'jsonp',
success: function(json) {
console.log(json[index]);
}
});
}
在每个'成功'回调'索引'中的代码中将是3.但我想调用0,1,2,3的回调。许多人在闭包中放置ajax请求:
for (var index = 0; index < 4; index++) {
(function(index){$.ajax({
url: 'http://graph.facebook.com/',
dataType: 'jsonp',
success: function(json) {
console.log(json[index]);
}
});
})(index);
}
我认为这是一个巨大的错误 - 如果请求当时不在那里怎么办?比'json'变量将是'undefined'。
你们中有没有人有正确的方法来解决这个问题?
答案 0 :(得分:4)
实际上JSON不会被定义
如果你打破以下代码,它将变得更加明确:
所以不要这样:
for (var index = 0; index < 4; index++) {
(function(index){$.ajax({
url: 'http://graph.facebook.com/',
dataType: 'jsonp',
success: function(json) {
console.log(json[index]);
}
});
})(index);
}
...你也可以这样写:
function myFunction(index) {
$.ajax({
url: 'http://graph.facebook.com/',
dataType: 'jsonp',
success: function(json) {
console.log(json[index]);
}
});
}
// and call it like this
for (var index = 0; index < 4; index++) {
myFunction(index);
}
正如您可能已经看到的那样,当这两个变量在函数内定义时,这两个变量中的任何一个如何通过另一个调用进行更改?
(旁注:我认为它实际上看起来更干净)