有没有办法检查 AJAX 函数返回值是真还是假?

  • 本文关键字:返回值 函数 AJAX 有没有 php
  • 更新时间 :
  • 英文 :


我正在尝试在那里建立一个注册表单,我需要检查 ajax 的加载函数的值是还是假。

我陷入了这个问题,这是我的代码

$("button").click(function(){
$("#error").load("newEmptyPHP.php",{email:mail});
})

newEmptyPHP.php

<?php
$mail=$_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([$mail]);
if($STH->rowCount() == 1){
//echo "<script>$('#error').html('Email alreday exist')</script>";
return false;
}
else{
return true;
}

**

你知道,ajax 调用返回函数或脚本的输出,而不是它的计算。我强烈怀疑当你手动调用代码时,你会有一个空的响应,发出ajax请求的javascript也是如此。

如果你正在显示程序中涉及的所有代码,并且没有任何中间件来修饰你的返回值,你应该以类似于这样的方式修改你的脚本:

<?php
$mail=$_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([$mail]);
$result = [];
if($STH->rowCount() == 1){
// echo "<script>$('#error').html('Email alreday exist')</script>";
$result["success"] = false;
$result["message"] = 'Email already exists';
} else{
$result["success"] = true;
}
// comunicate to the client that the response is json encoded
header('Content-type:application/json');
// output the response
echo json_encode($result);

javascript部分也必须改变(我不习惯jquery,请仔细处理):

$("button").click(function(){
$.get("newEmptyPHP.php",{email:mail}, function(data) {
if (data.success == false) {
$('#error').html(data.message);
} else {
// do wathever you need in case of data.success
}
})
})

您必须以 JSON 格式回显 true 或 false。 像这样。

<?php
$result = array();
$mail=$_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([$mail]);
if($STH->rowCount() == 1){    
$result['status'] = false;
}
else{
$result['status'] = true;
}
echo json_encode($result);
exit(0);
?>

编辑:你可以这样处理响应。

$("button").click(function(){
$("#error").load("newEmptyPHP.php",{email:mail},function(response){
result = $.parseJSON(response);
if(result.status){
//true
} else {
//false
}
});
});

最新更新