我知道这可能听起来很傻但我不知道该怎么做......
$('#someButton').click(function(e) {
e.preventDefault();
// Do ajax stuff
triggerAjaxSubmit('#signUpForm', false);
modalSlide(modal, $('.loginTab'), $('.saveTab'));
});
点击#someButton
我想通过ajax提交整个表单。执行此操作的函数称为triggerAjaxSubmit
。这个函数有一个简单的$ .ajax()函数,由jquery提供,并在success
或error
上执行某些操作。
所以我想知道如何延迟下一行modalSlide()
,直到我从triggerAjaxSubmit()
函数获得成功或错误。现在triggerAjaxSubmit()
被触发,并且在modalSlide()
函数触发后立即触发。但是,我希望modalSlide()
函数仅在成功或错误返回时触发。
我能以某种方式这样做吗?我的意思是在ajax()调用中只有return "success"
而不是激活modalSlide()
函数?
提前谢谢你。 亲切的问候, 马特
编辑:
function triggerAjaxSubmit(formId, reset, callback) {
$(formId).ajaxSubmit({
type: "POST",
cache: false,
resetForm: reset,
dataType: "text json",
success: function(jsonObject, status) {
// some other stuff
console.log('success');
},
error: function(requestObject, status) {
console.log('error');
}
});
}
triggerAjaxSubmit(form, true, function() {
console.log('this is not happning')
modalSlide(modal, $('.loginTab, .signUpTab'), $('.saveWeaveTab'), $('#newWeaveForm_title'));
});
答案 0 :(得分:4)
您可以在[{1}}中返回$.ajax
返回的延迟。类似的东西:
triggerAjaxSubmit
和
function triggerAjaxSubmit( .. ) {
return $.ajax({ .. });
}
修改:使用表单插件,您应该可以执行此操作:
triggerAjaxSubmit( .. ).done(function() {
modalSlide( .. );
});
和
function triggerAjaxSubmit( .. , callback ) {
$( .. ).ajaxSubmit({
.. ,
success: function() {
console.log("success");
callback();
})
});
}
答案 1 :(得分:1)
您需要通过modalSlide
来电中的回调来呼叫$.ajax()
功能。
答案 2 :(得分:1)
AJAX调用是异步的(除非你在jQuery中使用有问题的async: false
选项),所以如果你想在AJAX请求收到响应时执行一些代码,你需要把它放在{{ 1}}回调。
根据代码的其余部分,这可能与修改success
函数一样简单,以便提供给triggerAjaxSubmit
函数的回调包含相关代码。
或者您可能需要稍微修改它以将函数作为参数,然后将其作为$.ajax()
函数的成功回调提供。
编辑:我错过了问题中的“或错误”,因此我只提到了$.ajax()
回调。但同样的原则适用于success
回调。
答案 3 :(得分:1)
在modalSlide
来电success
参数中调用$.ajax()
函数