我得到了x个选择和输入,每个选择和输入都使用Ajax更改下一个选择和输入的值(例如研究工具)。选择次数可以根据不同的参数进行更改。
我编写的这段代码似乎无效:
$('body').find('select, input').each(function(i, e) {
$(e).trigger('change').ajaxComplete(function () { continue; } );
});
在继续下一个元素之前,有什么方法可以等待每个ajax调用的结束吗? setTimeout()并不是一个很好的解决方案,因为某些AJAX需要花费很多时间来生成(影响具有400万行的数据库)。
以下是我用于一次选择的Ajax调用的示例-请注意,在我的情况下,每个ajax调用都是不同的(页面,参数,成功操作),但是每个ajax调用都返回JSON:
$.ajax({
url:'load_product.php',
method:'POST',
cache:false,
dataType:'json',
data:{s:$(this).val()},
success:function(a, b, c) {
if(typeof a.error == "string") {
showError(a.typeError, a.error);
}
if(typeof a.product_ean == "string") {
$('input#product').val(a.product);
$('input#product').trigger('change');
}
},
error:function(a, b, c) {
showError('danger', b);
}
});