如果验证失败,如何在Php中停止重定向?

时间:2016-05-23 06:14:04

标签: javascript php jquery html

我在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>

3 个答案:

答案 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;
}