我使用var_dump($ result)测试了 status.php 返回值,并在check()函数中将其警告出来,如下所示:
function check() {
$.ajax({
url: "status.php"
}).done(function(data) {
alert(data);
});
}
并且它确实根据情况返回true或false,但是当我在check()函数内检查数据是真还是假时,它总是返回false。
status.php:
<?php
function status(){
if(logged() === true) {
$result = true;
} else {
$result = false;
}
return $result;
}
status();
?>
check()函数:总是警告“false”,即使有时应该是“true”
function check() {
$.ajax({
url: "status.php"
}).done(function(data) {
if(data === true){
alert("true");
} else {
alert("false");
}
});
}
答案 0 :(得分:1)
您没有将status()
函数的返回值发送回PHP。使用:
echo json_encode(status());
并更改AJAX调用以期待JSON响应。
function check() {
$.ajax({
url: "status.php",
dataType: 'json'
}).done(function(data) {
alert(data);
});
}
答案 1 :(得分:1)
你只需像这样回应$结果
ajax没有返回值,所以我们必须回应它。
<?php function status(){
if(logged() === true) {
$result = true;
} else {
$result = false;
}
echo $result; } status(); ?>
然后应该是这样的
function check() {
$.ajax({
url: "status.php"
}).done(function(data) {
if(data == "true"){
alert("true");
} else {
alert("false");
}
}); }
答案 2 :(得分:1)
使用
**dataType: 'json'**
function check() {
$.ajax({
url: "status.php",
dataType: 'json'
}).done(function(data) {
alert(data);
});
}
并在status.php上使用
echo json_encode(status());
答案 3 :(得分:1)
你无法通过ajax中的return方法获得响应。获得值“echo”无论函数中的结果如何,如
function status(){
if(logged() === true) {
$result = "1";
} else {
$result = "0";
}
echo $result;exit;
}
您将在ajax成功函数中获得值1或0
答案 4 :(得分:0)
Ajax可能没有返回布尔值true
或false
,而是返回一个字符串。
请尝试将true
放在双引号中:
if(data=="true")
您还可以对数据使用trim
函数,以确保返回的数据中不存在空格,如下所示:
if($.trim(data)=="true")
答案 5 :(得分:0)
只需删除类型检查,即&#39; ===&#39;替换为&#39; ==&#39;
function check() {
$.ajax({
url: "status.php"
}).done(function(data) {
if(data == true){
alert("true");
} else {
alert("false");
}
});
}