执行AJAX调用的非常简单的javascript函数。当函数返回时,它返回一个布尔值(不是字符串)。现在,出于测试目的,我将其设置为始终返回'true'。问题是我似乎无法捕获此值以便我可以对其进行评估。这是代码:
function verifySession() {
var xmlhttp = new XMLHttpRequest();
var returnValue = xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
// this is wrong, but I don't know how to alter it for boolean values
session_verified = xmlhttp.responseText;
// this outputs as empty, even though the return value is true
console.log(session_verified);
if (!session_verified) {
console.log("false value returned");
return false;
} else {
console.log("true value returned");
return true;
}
}
}
xmlhttp.open("GET", "/scripts/session_verifier.php", false);
xmlhttp.send();
return returnValue;
}
session_verifier.php基本上看起来像这样(再次,为了测试目的而大大简化):
<?php
return true;
?>
我已经多次使用这些函数来返回字符串,但这次我需要它来返回一个布尔值。我如何捕获其返回值?谢谢!
答案 0 :(得分:0)
在你的php脚本中。尝试返回字符串值true(“true”)或数字1
然后在你的JS
session_verified = Boolean(xmlhttp.responseText);
答案 1 :(得分:0)
测试你的代码我注意到结果是空的,你可以在这里看到:
readyState: 4
response: ""
responseText: ""
responseType: ""
responseXML: null
但是如果你改变一下你的PHP,你可以看到结果:
header('Content-Type: application/json');
echo json_encode(array(
'success' => true,
));
我希望它可以帮到你。
干杯,
答案 2 :(得分:0)
由于XMLHttpRequest响应可能是文本或XML,因此您可以通过这种方式处理布尔返回值。
// PHP
function your_function(){
if($something == TRUE){
return 1;
}else{
return 0;
}
}
// JavaScript
xhr = new XMLHttpRequest();
xhr.open("GET", url, true);
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
if(parseInt(xhr.responseText)){
// true
}else{
// false
}
}
};
xhr.send();