如何使用AJAX从PHP函数获得真或假?

我用var_dump($ result)测试了status.php的返回值,并在check()函数中将其警告出来,如下所示:

function check() { $.ajax({ url: "status.php" }).done(function(data) { alert(data); }); } 

并且它确实根据情况返回true或false,但是当我在check()函数内检查数据是真还是假时,它总是返回false。

status.php:

  

check()函数:总是警告“false”,即使有时应该是“true”

 function check() { $.ajax({ url: "status.php" }).done(function(data) { if(data === true){ alert("true"); } else { alert("false"); } }); } 

您没有将status()函数的返回值发送回PHP。 使用:

 echo json_encode(status()); 

并更改AJAX调用以期待JSON响应。

 function check() { $.ajax({ url: "status.php", dataType: 'json' }).done(function(data) { alert(data); }); } 

使用

 **dataType: 'json'** function check() { $.ajax({ url: "status.php", dataType: 'json' }).done(function(data) { alert(data); }); } 

并在status.php上使用

 echo json_encode(status()); 

你只需像这样回应$ result

ajax没有返回值,所以我们必须回应它。

   

然后应该是这样的

 function check() { $.ajax({ url: "status.php" }).done(function(data) { if(data == "true"){ alert("true"); } else { alert("false"); } }); } 

你无法通过ajax中的return方法获得响应。 获得值“echo”无论函数的结果如何,比如

 function status(){ if(logged() === true) { $result = "1"; } else { $result = "0"; } echo $result;exit; } 

您将在ajax成功函数中获得值1或0

Ajax可能没有返回布尔值truefalse ,而是返回一个字符串。

因此,请尝试在双引号中使用:

if(data=="true")

您还可以对数据使用trim函数,以确保返回的数据中不存在空格,如下所示:

if($.trim(data)=="true")

只需删除类型检查即’===’替换为’==’

 function check() { $.ajax({ url: "status.php" }).done(function(data) { if(data == true){ alert("true"); } else { alert("false"); } }); }