在提交表单之前,我需要完成一些ajax请求。
我如何在form.submit()调用中停滞,直到完成所有ajax请求?
var incompleteAjaxCalls = 0
// each ajax call runs incompleteAjaxCalls++
// followed by incompleteAjaxCalls-- upon completion
myForm.submit(function () {
//sleep while incompleteAjaxCalls > 0;
});
最佳答案
阻止提交表单,然后在ajax调用完成后提交
myForm.submit(function (e) {
e.preventDefault();
var self = this;
$.when(
$.ajax({url: 'ajax1'}),
$.ajax({url: 'ajax2'})
).always(function() {
self.submit();
});
});
编辑:
对于数组,你可以做
myForm.submit(function (e) {
e.preventDefault();
var self = this,
xhr = [];
xhr.push(
$.ajax({url: 'ajax1'})
);
xhr.push(
$.ajax({url: 'ajax2'})
);
$.when.apply($, xhr).always(function() {
self.submit();
});
关于javascript - 用js/jquery停止提交表单?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22538031/