Я протестировал возвращаемое значение status.php с помощью var_dump ($ result) и предупредил его в функции check () следующим образом:
function check() { $.ajax({ url: "status.php" }).done(function(data) { alert(data); }); }
и он действительно возвращал true или false в зависимости от ситуации, но когда я проверяю, истинны ли данные или false внутри функции check (), он всегда возвращает false.
status.php:
<?php function status(){ if(logged() === true) { $result = true; } else { $result = false; } return $result; } status(); ?>
check (): всегда предупреждает «ложь», хотя иногда должно быть «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());
вы просто эхо-результат, как это
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"); } }); }
Вы не можете получить ответ методом return в ajax. для получения значения «эхо» независимо от результата в функции, например
function status(){ if(logged() === true) { $result = "1"; } else { $result = "0"; } echo $result;exit; }
вы получите значение 1 или 0 в вашей функции успеха ajax
Ajax может не возвращать логическое значение true
или false
, а не строку.
Так что попробуйте и true
в двойные кавычки:
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"); } }); }