我需要等到我所有的ajax函数都完成了,然后继续执行。等到所有的ajax请求都完成
我的特殊情况是,我需要在提交表单之前先翻译表单中的某些字段。我通过ajax调用将它们翻译为外部网站。取决于我需要做更多或更少翻译的形式中的一些值。当所有的翻译完成后(如果有的话),我必须用ajax验证表单,如果有效,然后提交。
这是我的aproach:
首先,我必须发送Ajax调用的函数,并与接收到的数据做的东西:
function translate(...) {
$("#ajaxCounter").val(parseInt($("#ajaxCounter").val()) + 1);
$.ajax({
...
success:function(data) {
...
$("#ajacCounter").val(parseInt($("#ajaxCounter").val()) - 1);
}
});
然后,当表单是我执行以下提交代码:
$("#form").submit(function() {
translatable_fields.each(function() {
translate(...);
});
while (parseInt($("#ajaxCounter").val()) > 0) { null; }
if (!(this).hasClass('ready')) {
$.ajax({
//validation
success: function(data) {
if (data['isValid']) {
$("#form").addClass('ready');
$("#form").submit();
}
}
});
}
return true;
});
的问题是,while
循环中提交功能永远不会结束。
如果我执行的代码没有while
循环,我可以看到ajaxCounter
输入在翻译功能开始时增加,在结束时减少。
$(“#form”)。submit();该代码应该做什么? –
尝试使用递归setTimeout而不是使用while循环。 while循环锁定线程,因此无法从#ajaxCounter获取新数据。 –
我很努力去理解代码应该做什么 – garryp