问题描述
- 用ajax验证用户存在,为什么return true,方法没有结束,还在往下执行??
-
function isExit(){var value = $('#testDept').val(); if(value!=""){ $.ajax({ url:"deptIsExit", type:"post", data:{"deptValue":value}, success:function(data){ $('#message').html(data.result.message); if(data.result.isExit){ return true; } } }); }else { $('#message').html("不能为空!"); return false; }
}
function checkit(){
if(isExit()){ return true; } return false;
}
这个是个form表单,里面的onsubmit,ajax已经传递值,并且比较也正确,正常应该return true,方法就结束了,但是,往下执行了return false。导致我表单一直提交不了!!!这里本人确定值传递进去,并且比较完毕,返回的也是true!!但就是,方法没结束,怎么回事????调试结果是直接全部都执行了!没有跳过中间的return true!!!
解决方案
$.ajax({
url:"deptIsExit",
type:"post",
async: false,//设置fale表示ajax同步执行,如果是异步,则success没有执行前就会执行ajax后面的代码
data:{"deptValue":value},
success:function(data){
$('#message').html(data.result.message);
if(data.result.isExit){
return true;
}
}
});
解决方案二:
你的isExit是ajax异步的 你直接if(isExit()){}当然会有问题,因为异步方法不会阻塞,不应该同步调用,正确做法应该是在success里做你需要处理的事情 而不是单独调用。
时间: 2024-10-21 11:00:23