我有点卡住,我有两个调用填充的函数,并使用JSON.parse返回结果。但是当我在console.log中时,结果我得到了“未定义”。
这是我处理请求的函数:
function caller(url,cfunc){
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=cfunc;
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
function call_data(url,data){
caller(url,function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
return( JSON.parse (xmlhttp.responseText) );
}
});
}
电话在这里:
result = call_data('./chk_login.php',0);
console.log(result);
根据Chrome我的xhr请求完全正常并显示输出。但是console.log显示未定义...所以你知道这也是我的PHP脚本:
<?
$var = 1;
echo json_encode($var);
exit;
?>
可能导致问题的原因???
希望你能帮忙! 谢谢!
答案 0 :(得分:1)
由于这是异步的(毕竟这就是AJAX中的A所代表的),你不能简单地return
一个值,并期望它能够神奇地回归。相反,操纵回调中的数据(你已经有80%了)。
function call_data(url,data){
caller(url,function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
console.log( JSON.parse (xmlhttp.responseText) );
ajaxResult = JSON.parse (xmlhttp.responseText);
}
});
}
var ajaxResult;