2012-11-18 228 views
0

我有点卡住了,我有两个函数调用填充并返回结果与JSON.parse。但是当我console.log结果我得到“未定义”。XHR请求undefined

这是我的函数处理该请求:

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

任何不使用jQuery等Javascriot框架的理由? – Tchoupi

+2

因为我不想为这个问题使用jQuery或任何框架? – Sir

+0

'call_data'不会返回任何东西... – Musa

回答

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;