如何使用 jQuery 检查 AJAX 是否返回 true 或 false 值



我正在为我的网站构建注册表单,我使用 jquery 验证我的注册页面我想在所有字段都以有效方式填充时执行此操作,然后注册页面重定向或加载并将数据存储在数据库中......

1.第一个 jQuery 代码检查输入字段

2.然后在jQuery代码中有一个ajax调用,该调用检查电子邮件是否已经存在,如果ajax调用返回true,则数据将入数据库,如果返回false,则页面将不会加载并显示电子邮件已经存在的消息

我的代码中的问题是,当 ajax 调用为真或假时,我的页面会继续加载并将数据插入数据库,但我希望如果值为 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);
}

试试这个:

$.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;
}
}
});

在我看来,您应该调用 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
}
}
});

您可以将异步选项添加到 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;
}

[更新]

但是您不需要在客户端检查这一点。Yo可以检查您的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);
}

最新更新