Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.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执行While循环?_Javascript_Jquery_Ajax_Loops_Asynchronous - Fatal编程技术网

Javascript 是否为AJAX执行While循环?

Javascript 是否为AJAX执行While循环?,javascript,jquery,ajax,loops,asynchronous,Javascript,Jquery,Ajax,Loops,Asynchronous,我试图循环一个ajax请求10次。我注意到一些奇怪的错误,比如int是10,10倍。我已经搜索并发现它与AJAX异步相关。我希望有一些东西可以等待ajax请求完成,然后继续 提前谢谢 do{ var int=0; $.ajax({...}, success:function(response){ int++; }, }); alert(int); }while(int<10); do{ var int=0; $.ajax({…}, 成功:函

我试图循环一个ajax请求10次。我注意到一些奇怪的错误,比如int是10,10倍。我已经搜索并发现它与AJAX异步相关。我希望有一些东西可以等待ajax请求完成,然后继续

提前谢谢

do{
    var int=0;
    $.ajax({...},
        success:function(response){ int++; },
    });
    alert(int);
}while(int<10);
do{
var int=0;
$.ajax({…},
成功:函数(响应){int++;},
});
警报(int);

}while(int您可以将参数
async:false
设置为
ajax
对象

$.ajax({
        url: $(this).attr('href'),
        type: 'GET',
        async: false,
        error: function(){
            return true;
        },
        success: function(msg){
        }
    });

您可以将参数
async:false
设置为
ajax
对象

$.ajax({
        url: $(this).attr('href'),
        type: 'GET',
        async: false,
        error: function(){
            return true;
        },
        success: function(msg){
        }
    });

如果您的
success
处理程序引用的是
int
,那么在运行
int
时,它将始终为0,因为这是在循环完成很久之后

如果确实希望调用连续运行,每次使用不同的值,请将调用移动到函数,并根据需要从ajax成功处理程序调用它:

function myAjax(int) {
  if (int >= 10)
    return;

  $.ajax({   //...
     success:function(response){ 
       int++;
       // whatever we need to do with int and the response

       myAjax(int);
     }
  });
}

myAjax(0);

如果您的
success
处理程序引用的是
int
,那么在运行
int
时,它将始终为0,因为这是在循环完成很久之后

如果确实希望调用连续运行,每次使用不同的值,请将调用移动到函数,并根据需要从ajax成功处理程序调用它:

function myAjax(int) {
  if (int >= 10)
    return;

  $.ajax({   //...
     success:function(response){ 
       int++;
       // whatever we need to do with int and the response

       myAjax(int);
     }
  });
}

myAjax(0);

我相信这就是您正在寻找的代码:

for (var int = 0; int < 10; int++) {
    (function (int) {
        $.ajax({
            url : 'process.php',
            success : function() {
                alert("TEST");
            }
        });
    })(int);
}
for(var int=0;int<10;int++){
(功能(内部){
$.ajax({
url:'process.php',
成功:函数(){
警报(“测试”);
}
});
})(int);
}
以下是一些链接,提供了有关此操作的更多信息:

我相信这就是您要寻找的代码:

for (var int = 0; int < 10; int++) {
    (function (int) {
        $.ajax({
            url : 'process.php',
            success : function() {
                alert("TEST");
            }
        });
    })(int);
}
for(var int=0;int<10;int++){
(功能(内部){
$.ajax({
url:'process.php',
成功:函数(){
警报(“测试”);
}
});
})(int);
}
以下是一些链接,提供了有关此操作的更多信息:

将警报移动到success函数中是否符合您的要求?根据定义,ajax是异步的。让它等待会违背它的目的。jquery when是一个更好的选择。@anu ajax并不总是异步的。是的,ajax的主要用途是异步,但您仍然可以在ajax请求中放入
async:false
。是否移动警报成功函数是否适合您想要的行为?根据定义,ajax是异步的。让它等待会违背它的目的。jquery when是一个更好的选择。@anu ajax并不总是异步的。是的,ajax的主要用途是异步,但您仍然可以在ajax请求中放入
async:false