早上乐乐在Q上问我在一个表单的onsumbit事件处理js中如果js里需要用ajax来判断一些状态的话,form会因为ajax的异步执行而先执行ajax后面的代码导致ajax的判断生效不了,表单判断状态就会不准确。
代码类似这样:
<form method=”post” action=”?” onSubmit=”return demo();”>
<input type=”submit” value=”submit”>
</form>
<script type=”text/javascript”>
function demo(){
$.ajax({
url:’/welcome/ajaxsubmit’,
type:’POST’,
dataType:’text’,
success:function(data){
alert(data);
alert(‘111111111’);
},
error:function(){
alert(‘fdsafdsa’);
}
});
alert(‘222222222’);
return false;
}
</script>
alert(‘222222222’);会先执行,然后才是alert(‘111111111’);
产生问题的原因就是ajax本身就是一个异步技术,但是我们可以强制它用同步的方式执行,解决办法就是在ajax请求的参数中添加一个参数,关闭异步。
async:false这样就可以了。
受教了,感谢楼主