如何使用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可能没有返回布尔值true
或false
,而是返回一个字符串。
因此,请尝试在双引号中使用:
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"); } }); }