Как получить true или false из функции PHP с помощью AJAX?

Я протестировал возвращаемое значение 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"); } }); }