2017-08-27 164 views
0

我正在为我的网站构建一个注册表单我使用jquery验证了我的注册页面我想要这样做当所有字段都填充有效的方式,然后注册页面重定向或加载和存储在数据库中的数据...如何检查ajax使用jquery返回true或false值

1.第一jquery的代码检查输入字段

2. jQuery代码然后有一个AJAX调用,其检查是否已经电子邮件存在与否如果ajax调用返回true,那么数据将被插入到数据库中,如果它返回false页面将不会加载并显示消息t帽子电子邮件已存在

在我的代码中的问题是,当ajax调用是true或false我的页面不断加载并在数据库中插入数据,但我希望如果值为false页面将不会加载。

这里是我的代码

$.ajax({ 
     type:'POST', 
     url:'email_validator.php', 
     data:{email:mail}, 
     success:function (response){ 
     var result = $.parseJSON(response); 
      if (result.status===false) { 
       $('#error').html("Email alreaday exist"); 
       return false; 
      } if(result.status===true) { 
       return true; 
      } 
     } 
    }); 

,这里是我的email_validator.php

<?php 
     if(isset($_POST["email"])){ 
      $result = array(); 
      $email=$_POST["email"]; 
      $db=new PDO("mysql:host=localhost;dbname=the_scops","root",""); 
      $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
      $STH=$db->prepare("SELECT email FROM signup WHERE email=?"); 
      $STH->execute([$email]); 
      if($STH->rowCount() == 1){ 
       //echo "Email alreday exist"; 
       $result["status"] = false; 
      } 
      else{ 
       $result["status"] = true; 
      } 
       echo json_encode($result); 
      exit(0); 
     } 

回答

0

您可以添加异步选项设置为false,并返回Ajax调用外:

function testAjax() { 
    var resultStatus = ""; 

    $.ajax({ 
     type:'POST', 
     url:'email_validator.php', 
     async: false, 
     data:{email:mail}, 
     success:function (response){ 
     var result = $.parseJSON(response); 
     resultStatus = result.status; 

     if (result.status===false) { 
      $('#error').html("Email alreaday exist"); 
     } 
     } 
    }); 

    return resultStatus; 
} 

[更新]

但是你不需要在客户端检查这一点。哟可以检查是否在您的email_validator.php存在的电子邮件,并立即将其写入数据库,如果不存在的话:

email_validator.php

<?php 
     if(isset($_POST["email"])){ 
      $result = array(); 
      $email=$_POST["email"]; 
      $db=new PDO("mysql:host=localhost;dbname=the_scops","root",""); 
      $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
      $STH=$db->prepare("SELECT email FROM signup WHERE email=?"); 
      $STH->execute([$email]); 
      if($STH->rowCount() == 1){ 
       //echo "Email alreday exist"; 
       $result["status"] = false; 
      } 
      else{ 
       $result["status"] = true; 

       // --> INSERT the new email into the database 
      } 
       echo json_encode($result); 
      exit(0); 
     } 
0

试试这个:

$.ajax({ 
    type:'POST', 
    url:'email_validator.php', 
    data:{email:mail}, 
    success:function (response){ 
     if (response.status === true) { 
      return true; 
     } else { 
      $('#error').html("Email alreaday exist"); 
      return false; 
     } 
    } 
}); 
0

在我您应该调用PHP API方法直接在成功函数回调中插入新邮件:

$.ajax({ 
     type: 'POST', 
     url: 'email_validator.php', 
     data: {email: mail}, 
     success: function (response) { 
      var result = $.parseJSON(response); 

      if (result.status === false) { 
       $('#error').html("Email already exists"); 
      } 
      else (result.status === true) { 
       // -> Call here the PHP api method to insert the new email in the database 
      } 
     } 
    });