任何提示,我如何使它起作用?
$( "#search_form" ).on('submit',function(event) {
ajax(function(response){
if (response.status == 'error'){
event.preventDefault();
alert(response.status,response.msg);
}else if(response.status == 'ok'){
alert(response.status,response.msg);
}
});
});
event.preventDefault();没有被调用,可能是因为它超出了ajax函数的范围。 该行仅阻止按钮执行后期操作。 我如何将其插入到ajax函数中?我只是在学习回调,这让我很惊讶
谢谢你们
答案 0 :(得分:1)
已更新,询问Ajax调用返回后的操作方法,这是我最初不理解的要求。
使用已发布的代码,并且由于Ajax调用是异步的, submit 函数将在Ajax调用返回之前退出,然后,当Ajax调用返回时,事件在这种情况下,em>不再可用。
要在Ajax调用成功后能够真正重新提交 form ,请执行以下操作,例如在提交第二次提交之前取消绑定处理程序,例如
注意,自ver。 3,unbind()
已过时,因此我使用了.off()
$("#search_form").on('submit', function(event) {
console.log("here we enter only once")
event.preventDefault();
console.log("simulate async with setTimeout, and after\nits delay (3 sec.) my answer will show up")
// simulate ajax async call
setTimeout(function() {
console.log("success ... now we submit the form properly");
// unbind and resubmit
$( "#search_form" ).off('submit').submit()
}, 3000);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="https://stackoverflow.com/a/51306380/2827823" method="post" id="search_form">
<input type="text" value="some dummy value">
<input type="submit">
</form>