微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – PHP验证器从AJAX获得0

本质上,我正在尝试向PHP脚本发送电子邮件,以使用HTML中的ajax和onKeyUp事件检查可用性.

到目前为止,我已经尝试了过去几个小时我能想到的所有事情,试图解决这个问题无济于事.

注意:在我的源代码html中,脚本位于<头>.

我在下面附上了我的代码.

var checkEmail = function() {
  $.ajax({
    method: 'POST',
    url: 'checkEmail',
    dataType: 'json',
    data: {
      'email': $('#email').val()
    },
    success: function(response) {
      if (response == "0" || response == 0) {
        document.getElementById("email").style.border = "1px solid rgba(0, 255, 0, 0.9)";
        console.log("Good");
      } else if (response == "2" || response == 2) {
        document.getElementById("email").style.border = "1px solid yellow";
        console.log("Resp. bad");
      } else {
        document.getElementById("email").style.border = "1px solid rgba(255, 0, 0, 0.9)";
        console.log("Bad");
      }
    }
  });
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="modal-form-left">
  <input type="text" name="fname" placeholder="First Name" required><br>
  <input type="text" placeholder="Last Name" name="lname" required><br>
  <input type="email" placeholder="Email" id="email" onKeyUp="checkEmail();" required value=""><br>
  <input type="password" placeholder="Password" name="pass" id="password" onKeyUp='checkPass();' required pattern="(?=^.{6,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$"><br>
  <input type="password" placeholder="Confirm Password" id="confirm_password" onKeyUp="checkPass();" required pattern="(?=^.{6,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$"><br>
  <input type="submit" id="regButton" value="Register">
</div>
<?PHP
if(isset($_POST['email'])) {
    $email = $_POST['email']; 
    include("../src/PHP/config_users.PHP");

    if (MysqLi_connect_errno()) {
        printf("Connect Failed: %s\n", MysqLi_connect_error());
        exit();
    }

    $query = "SELECT email FROM info WHERE email=?";
    if ($stmt = $db_users->prepare($query)) {
        $stmt->bind_param("i", $email); //Make sure not to bind a string to an int
        $stmt->execute();
        $stmt->bind_result($email_rec);
        $stmt->fetch();
        if($stmt->num_rows >= "1") {
            echo "1";
            $stmt->close();
            $db_users->close();
            die();
        } else {
            echo "0";
            $stmt->close();
            $db_users->close();
            die();
        }
    }
} else {
    echo "2";
    die();
}

?&GT

解决方法:

问题很可能是dataType属性.你写了json但是回应了一个字符串.

你有两个选择:

1)要么像这样返回一个json(在PHP中)

echo json_encode(array('result' => 1));

然后在javascript中得到这样的值

if (parseInt(response.result) === 1) {

2)第二个选项是将dataType更改为html然后在javascript中我建议您使用此代码进行比较:

if (parseInt(response) === 0) {

===比较值和类型(字符串,数组,整数等).通过在响应上使用parseInt,您将其转换为整数,确保比较不会失败,因为您有一个字符串.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐