jQuery – 同步执行2个函数

我为我的应用程序上创建的每个表单创建了一个提交函数。 它类似于下面写的那个。

$('form').submit(function(){ //Some variable declaration $.ajax({ type:'post', url:'someurl', data:formdata success:function(){ console.log('form submitted'); } }); }); 

毫无疑问,这很好。 现在,对于其中一种forms,我希望在收到响应后更新某个元素,类似于此。

 $('#customform').submit(); console.log('custom form submitted'); 

因此,在这种情况下,我希望仅在“表单提交”消息打印到控制台(同步加载)后才打印“自定义表单提交”消息。 有人帮忙吗?

只需将代码包含在success函数中:

 success:function(){ console.log('form submitted'); console.log('custom form submitted'); } 

您还可以添加完整的function,因此无论错误还是成功,代码都会运行:

 success:function(){ console.log('form submitted'); }, complete: function() { console.log('custom form submitted'); } 

正如@Tomalak在评论中所提到的,现代化的方式:

 var jqxhr = $.post( "example.php", function() { alert( "success" ); }) .done(function() { alert( "second success" ); }) .fail(function() { alert( "error" ); }) .always(function() { alert( "finished" ); }); 

可以在这里阅读更多: jQuery.post()。done()和成功:

我会取消$("form").submit在表单完成提交后$("form").submit eventlistener,并在其成功函数中添加一个自定义的

 $("form").submit(function(){ $.ajax({ type:"post", url:"someurl", data:formdata, success:function(){ console.log("form submitted"); $("form").off("submit"); $("#customform").submit(function(){ $.ajax({ type:"post", url:"someurl", data:modifiedFormdata, success:function(){ console.log("custom form submitted"); } }); }); } }); });