javascript

位置:IT落伍者 >> javascript >> 浏览文章

浅析onsubmit校验表单时利用ajax的return false无效问题


发布日期:2023年05月25日
 
浅析onsubmit校验表单时利用ajax的return false无效问题
前几天在校验一个表单数据用到ajax时遇到 return false 无效问题以下就是对这个问题进行了分析介绍需要的朋友可以参考下复制代码 代码如下:
/**
* 表单提交校验
**/
function onSubmit(){
if($(#name)val()length<){
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;
}
}
});
}


问题原因
ajax时return false 的function与onsubmit()不是同一个函数;
在ajax执行时async默认的设置值为true这种情况为异步方式就是说当ajax发送请求后在等待server端返回的这个过程中前台会 继续 执行ajax块后面的脚本直到server端返回正确的结果才会去执行success也就是说这时候执行的是两个线程ajax块发出请求后一个线程 和ajax块后面的脚本(另一个线程)

修改后的代码

复制代码 代码如下:


/**
* 表单提交校验
**/
function onSubmit(){
if($(#name)val()length<){
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;

上一篇:javascript检测对象中是否存在某个属性判断方法

下一篇:JS使用正则去除字符串最后的逗号