Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将Ajax函数转换为循环_Javascript_Jquery_Ajax_Loops - Fatal编程技术网

Javascript 将Ajax函数转换为循环

Javascript 将Ajax函数转换为循环,javascript,jquery,ajax,loops,Javascript,Jquery,Ajax,Loops,我请求您回答我遇到的一个问题(部分是数组): for(i=1;i由于AJAX调用是异步的,所以所有回调都在循环之后运行 可以使用函数表达式为每次迭代创建单独的变量: for(i=1;i<part.length;i++){ $("#content").append('<div id="id' + i + '"></div>'); (function(i){ $.get('ajax.php?id=' + i, function(data) {

我请求您回答我遇到的一个问题(部分是数组):


for(i=1;i由于AJAX调用是异步的,所以所有回调都在循环之后运行

可以使用函数表达式为每次迭代创建单独的变量:

for(i=1;i<part.length;i++){
  $("#content").append('<div id="id' + i + '"></div>');

  (function(i){

    $.get('ajax.php?id=' + i, function(data) {
      console.log("cache" + i);
      $("#id" + i).html(data);
    });

  })(i);

});

for(i=1;i由于AJAX调用是异步的,所以所有回调都在循环之后运行

可以使用函数表达式为每次迭代创建单独的变量:

for(i=1;i<part.length;i++){
  $("#content").append('<div id="id' + i + '"></div>');

  (function(i){

    $.get('ajax.php?id=' + i, function(data) {
      console.log("cache" + i);
      $("#id" + i).html(data);
    });

  })(i);

});

对于(i=1;iGuffa,他的答案应该有效,您也可以使用-version并将async参数设置为false。查看文档了解如何使用它


编辑:需要注意的是,使用
async:false
是一种不好的做法,将被弃用。

Guffa他的答案应该有效,您也可以使用-version并将async参数设置为false。查看文档了解如何使用它


编辑:需要注意的是,使用
async:false
是一种不好的做法,将被弃用。

或者,从服务器获取JSON并对其进行迭代:

$.get('ajax.php', { from: 1, to: 140 } ).done(function(data) {
    $(data).each(function(index) {
        //do something with this and index
    });
});

通过这种方式,您可以在内部访问索引,并且只向服务器发出一个请求,因此不会污染网络。

或者,从服务器获取JSON并对其进行迭代:

$.get('ajax.php', { from: 1, to: 140 } ).done(function(data) {
    $(data).each(function(index) {
        //do something with this and index
    });
});

通过这种方式,您可以在内部访问索引,并且只向服务器发出一个请求,从而不会污染网络。

请注意,您的循环将尝试在浏览器允许的情况下一次发出尽可能多的AJAX请求,但不保证它们会按任何特定顺序完成

如果您真的必须发出140个AJAX请求,我建议您:

var i = 1;
(function loop() {
    if (i < part.length) {
        $("#content").append('<div id="id' + i + '"></div>');
        $.get('ajax.php?id=' + i).done(function(data) {
            console.log("cache" + i);
            $("#id" + i).html(data);
            i++;
        }, loop);
     }
});
var i=1;
(函数循环(){
如果(i<零件长度){
$(“#内容”)。附加(“”);
$.get('ajax.php?id='+i).done(函数(数据){
console.log(“缓存”+i);
$(#id+i).html(数据);
i++;
},回路);
}
});

请注意,您的循环将尝试在浏览器允许的情况下一次触发尽可能多的AJAX请求,但不保证它们会以任何特定顺序完成

如果您真的必须发出140个AJAX请求,我建议您:

var i = 1;
(function loop() {
    if (i < part.length) {
        $("#content").append('<div id="id' + i + '"></div>');
        $.get('ajax.php?id=' + i).done(function(data) {
            console.log("cache" + i);
            $("#id" + i).html(data);
            i++;
        }, loop);
     }
});
var i=1;
(函数循环(){
如果(i<零件长度){
$(“#内容”)。附加(“”);
$.get('ajax.php?id='+i).done(函数(数据){
console.log(“缓存”+i);
$(#id+i).html(数据);
i++;
},回路);
}
});

async:false
是一种不好的做法,将会受到批评谢谢你通知我,我会编辑我的答案并把你的反馈放进去。这不仅仅是一种不好的做法和批评。在某些浏览器中,它根本不起作用。嗯,每天学习一些新东西。你想让我删除我的帖子吗?哪些浏览器不支持async=false?
async:false
是一种不好的做法,将会遭到反对谢谢你通知我,我会编辑我的答案并把你的反馈放进去。这不仅仅是一种不好的做法和不赞成的做法。在某些浏览器中,它根本不起作用。嗯,每天学习一些新东西。你想让我删除我的帖子吗?哪些浏览器不支持async=false?阅读这一部分“在循环中创建闭包:常见错误”阅读“在循环中创建闭包:常见错误”一节