浅析onsubmit校验表单时利用ajax的return false无效问题
2014-11-26 23:37
435 查看
前几天,在校验一个表单数据用到ajax时,遇到 return false 无效问题,以下就是对这个问题进行了分析介绍,需要的朋友可以参考下
问题原因:
1. ajax时return false 的function与onsubmit()不是同一个函数;
2. 在ajax执行时,async默认的设置值为true,这种情况为异步方式,就是说当ajax发送请求后,在等待server端返回的这个过程中,前台会继续 执行ajax块后面的脚本,直到server端返回正确的结果才会去执行success,也就是说这时候执行的是两个线程,ajax块发出请求后一个线程 和ajax块后面的脚本(另一个线程)。
修改后的代码:
/** * 表单提交校验 **/ function onSubmit(){ if($('#name').val().length<2){ alert("名称请不少于两个汉字"); return false; } var t = new Date().getTime(); $.ajax({ type: "POST", url: "/users/checkrepeat/", data: "name=" + $('#name').val() + "&time=" + t, success:function(res){ if(res == 'exists'){ alert("名称已存在,请修改."); return false; } } }); }
问题原因:
1. ajax时return false 的function与onsubmit()不是同一个函数;
2. 在ajax执行时,async默认的设置值为true,这种情况为异步方式,就是说当ajax发送请求后,在等待server端返回的这个过程中,前台会继续 执行ajax块后面的脚本,直到server端返回正确的结果才会去执行success,也就是说这时候执行的是两个线程,ajax块发出请求后一个线程 和ajax块后面的脚本(另一个线程)。
修改后的代码:
/** * 表单提交校验 **/ function onSubmit(){ if($('#name').val().length<2){ alert("名称请不少于两个汉字"); return false; } var flag = true; var t = new Date().getTime(); $.ajax({ type: "POST", async:false, // 设置同步方式 cache:false, url: "/users/checkrepeat/", data: "name=" + $('#name').val() + "&time=" + t, success:function(res){ if(res == 'exists'){ alert("名称已存在,请修改."); flag = false; } } }); if(!flag) return false;
相关文章推荐
- 浅析onsubmit校验表单时利用ajax的return false无效问题
- 浅析onsubmit校验表单时利用ajax的return false无效问题
- 浅析onsubmit校验表单时利用ajax的return false无效问题
- onsubmit校验表单时利用ajax的return false 无效问题
- onsubmit 校验表单时利用 ajax 的 return false 无效问题
- onsubmit 校验表单时利用 ajax 的 return false 无效问题
- 关于js 方法,实现ajax请求时,return false/true无效的问题
- onsubmit校验表单时利用ajax的return false无效解决方法
- onsubmit校验表单时利用ajax的return false无效解决方法
- onsubmit校验表单时利用ajax的return false无效解决方法
- onsubmit校验表单时利用ajax的return false无效解决方法
- ajax return false 无效
- jq和ajax进行表单校验,对于新增行ID重复问题的处理
- JS return false 与 return true(解决表单重复提交的问题)
- 关于form表单通过ajax return false失败的原因
- ajax提交表单的一些注意事项:解释为什么return false却依然提交
- IE6利用Javascript进行表单提交遇到的问题
- 由表单中onsubmit="return false;"想到的 steve_gu
- 利用ASP.NET和AJAX解决手工拼接HTML问题
- Jquery的Ajax在fox下正常、IE下无效问题,(转载)