我在signup.php页面遇到问题。我想如果信息已存在于数据库中,则此页面应停止重定向到下一页并显示警告框。现在的问题是我尝试了以下jquery的代码片段,但这在我的情况下不起作用。我搜索了这个并提供以下解决方案,但这不起作用。
Jquery代码
function validate()
{
var email =$('#email').val();
var mobile = $('#mobile').val();
$.post("check_user.php",{ email: email,mobile:mobile}, function(result){
if(result == "0"){
alert('This email is already registered with us. Please try another.');
return false;
}
else
{
return true;
}
});
}
下面给出了我调用此jquery函数的Html代码
HTML代码
<form id="form1" autocomplete="on" action='/marammut_new/test.php'
method="post" enctype="multipart/form-data" onsubmit="return validate()">
...
</form>
答案 0 :(得分:2)
由于这是一个异步调用,它以异步方式验证表单,并且在响应之前它会使函数执行。最好停止表单提交并明确提交:
function validate() {
var email = $('#email').val();
var mobile = $('#mobile').val();
$.post("check_user.php", { email: email, mobile: mobile },function(result) {
if (result == "0") {
alert('This email is already registered with us. Please try another.');
} else {
$('#form1')[0].submit();
}
});
return false; // stop it here
}
答案 1 :(得分:0)
你应该试试Window.location.href
它对我有用。
答案 2 :(得分:0)
首先,你在异步函数中返回true / false,因此onSubmit函数永远不会得到返回。
其次,您希望根据异步调用的结果提交表单,因此您应始终阻止onSubmit函数的默认行为,并在成功执行异步请求后执行相应的操作。
这是在成功请求后以正面响应提交表单的代码段,否则会发出错误警告。
function validate(e) {
// prevent the default behaviour of submit event
e.preventDefault();
var email =$('#email').val();
var mobile = $('#mobile').val();
$.post("check_user.php",{ email: email,mobile:mobile}, function(result){
if(result == "0"){
alert('This email is already registered with us. Please try another.');
return false;
} else {
// submit the form if it is valid
this.submit();
return true;
}
});
// always return false to prevent the default behaviour of submit event
return false;
}