XHR请求未定义

时间:2012-11-18 03:59:15

标签: javascript ajax

我有点卡住,我有两个调用填充的函数,并使用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;
?>

可能导致问题的原因???

希望你能帮忙! 谢谢!

1 个答案:

答案 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;