我有一个返回true或false的函数,通过ajax提交表单
<form method="post" onsubmit="return validate()">
<input type="text" name="user" id="user">
</form>
function validate(){
var n = $("#user").val();
if(n.length<2){
return false;
}
else{
$.ajax({
url: 'ajax/checkuser.php',
global: false,
type: 'POST',
data: {user:n},
async: false, //blocks window close
success: function(data) {
if(data.trim().indexOf('exists')>-1){
alert('user exists);
return false;
}
else if(data.trim().indexOf('ok')>-1){
return true;
}
}
});
}
}
当我按下ESC并通过控制台检查网络时,我发现ajax请求返回'存在'并且“用户存在”的警告被触发但是表单在提交时不提交
答案 0 :(得分:5)
它现在无法正常工作,因为您没有将false
响应返回到您的表单,而是回复了您的ajax成功回调。
请尝试更新以下代码段:
<form method="post" onsubmit="return validate()">
<input type="text" name="user" id="user">
</form>
function validate(){
var retValue = false;
var n = $("#user").val();
if(n.length<2){
retValue = false;
}
else{
$.ajax({
url: 'ajax/checkuser.php',
global: false,
type: 'POST',
data: {user:n},
async: false, //blocks window close
success: function(data) {
if(data.trim().indexOf('exists')>-1){
alert('user exists);
retValue = false;
}
else if(data.trim().indexOf('ok')>-1){
retValue = true;
}
}
});
}
return retValue;
}