Javascript jQuery each(),在内部ajax完成后逐个处理

Javascript jQuery each(),在内部ajax完成后逐个处理,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有这个密码 $("[input]").each(function(){ var data = $(this).val(); $.post('someurl.php',{data:data},function(result){ alert(result); }); }); 现在,当我打开我的网络选项卡时,post ajax请求似乎同时启动,但我希望一个接一个地实现。这意味着当一个ajax请求完成时,我希望每个()都等待再次循环 我怎样才能做到这一点呢?这是因为ajax的异步

我有这个密码

$("[input]").each(function(){
  var data = $(this).val();
  $.post('someurl.php',{data:data},function(result){
    alert(result);
  });
});
现在,当我打开我的网络选项卡时,post ajax请求似乎同时启动,但我希望一个接一个地实现。这意味着当一个ajax请求完成时,我希望每个()都等待再次循环


我怎样才能做到这一点呢?

这是因为ajax的异步特性,您可以尝试的是

process($("[input]"));

function process($inputs) {
    if (!$inputs.length) {
        return;
    }

    var $input = $inputs.eq(0);
    var data = $input.val();

    $.post('someurl.php', {
        data: data
    }, function (result) {
        console.log(result);
    }).always(function () {
        process($inputs.slice(1))
    });
}

演示:

这是因为ajax的异步特性,您可以尝试的是

process($("[input]"));

function process($inputs) {
    if (!$inputs.length) {
        return;
    }

    var $input = $inputs.eq(0);
    var data = $input.val();

    $.post('someurl.php', {
        data: data
    }, function (result) {
        console.log(result);
    }).always(function () {
        process($inputs.slice(1))
    });
}

演示:

我建议您将这些
输入
放在
表单中
,然后使用
$('form').serialize()
将它们一次发送到服务器…以防万一您希望更快一点并且希望避免重复调用服务器

除非您真的必须一个接一个地发送它们,否则您可以循环多次调用服务器,如果您碰巧有许多
输入
字段,这可能会降低系统的运行速度

类似这样的操作会对服务器进行一次调用:

<form>
<input name='input_1' />
.
...

...

...


...


...
<input name='input_1000' />

</form>

我建议您将这些
输入
放在
表单
中,然后使用
$(“表单”).serialize()
将它们一次发送到服务器…以防万一您希望更快一点并且希望避免重复调用服务器

除非您真的必须一个接一个地发送它们,否则您可以循环多次调用服务器,如果您碰巧有许多
输入
字段,这可能会降低系统的运行速度

类似这样的操作会对服务器进行一次调用:

<form>
<input name='input_1' />
.
...

...

...


...


...
<input name='input_1000' />

</form>


ajax仅代表异步。提醒:ajax中的第一个a代表异步。ajax仅代表异步。提醒:ajax中的第一个a代表异步。async false与async false有什么区别?@Phoenix async false将阻止浏览器。。。这里没有阻塞。。。异步请求一完成,就会发送第二个请求。我投票删除了我的答案,赞成这一个,这一个更优雅,并且在出现错误时按照OP的要求执行。async false与async false有什么区别?@Phoenix async false将阻止浏览器。。。这里没有阻塞。。。一个异步请求完成后,第二个请求就发送了。我投票删除了我的答案,支持这个,这个答案更优雅,并且在出现错误时按照OP的要求执行。这实际上是最明智的答案。。。但是OP必须有他的理由,以防他不知道他可以简单地将它们以
的形式序列化。。。这个建议实际上是可以处理的,发送所有数据将一次输出数据。我需要为每个请求输出数据。如果后端发生错误,将在不中断其余进程的情况下输出该错误。:)如果有错误,它仍然是一个错误,一些挂起的进程可能仍然会被中断。。。i、 e:如果用户输入了错误的
电子邮件
Id格式,您不会期望
表单
跳转该字段并传递其他内容。。。如果在10个重要的
字段中
s,用户只输入1,这是最后一个。。。如果您在前往服务器之前无法
捕获
这九(9)个字段,这可能是codesOk中的一个危险且巨大的错误,以防您希望更快地执行此操作,并且希望避免在碰巧有100或1000个
输入字段时重复调用服务器,请随意对
表单
进行序列化。有了这些,你可以像职业选手一样工作,给你的朋友留下深刻印象!!这实际上是最明智的答案。。。但是OP必须有他的理由,以防他不知道他可以简单地将它们以
的形式序列化。。。这个建议实际上是可以处理的,发送所有数据将一次输出数据。我需要为每个请求输出数据。如果后端发生错误,将在不中断其余进程的情况下输出该错误。:)如果有错误,它仍然是一个错误,一些挂起的进程可能仍然会被中断。。。i、 e:如果用户输入了错误的
电子邮件
Id格式,您不会期望
表单
跳转该字段并传递其他内容。。。如果在10个重要的
字段中
s,用户只输入1,这是最后一个。。。如果您在前往服务器之前无法
捕获
这九(9)个字段,这可能是codesOk中的一个危险且巨大的错误,以防您希望更快地执行此操作,并且希望避免在碰巧有100或1000个
输入字段时重复调用服务器,请随意对
表单
进行序列化。有了这些,你可以像职业选手一样工作,给你的朋友留下深刻印象!!