本质上,我正在尝试向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();
}
?>
解决方法:
问题很可能是dataType属性.你写了json但是回应了一个字符串.
你有两个选择:
echo json_encode(array('result' => 1));
然后在javascript中得到这样的值
if (parseInt(response.result) === 1) {
2)第二个选项是将dataType更改为html然后在javascript中我建议您使用此代码进行比较:
if (parseInt(response) === 0) {
===比较值和类型(字符串,数组,整数等).通过在响应上使用parseInt,您将其转换为整数,确保比较不会失败,因为您有一个字符串.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。