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"); } }); }); } }); });