Javascript 返回未设置Json编码

Javascript 返回未设置Json编码,javascript,ajax,Javascript,Ajax,我有一个简单的ajax请求,它得到一个json编码数组,但它一直告诉我它没有设置。。。我想我把报税表放错地方了,但我不确定我把它放在哪里了。。。这是我的职责: //Browser Support Code function ajaxFunction(url,data){ var ajaxRequest; // The variable that makes Ajax possible! try{ // Opera 8.0+, Firefox, Safari

我有一个简单的ajax请求,它得到一个json编码数组,但它一直告诉我它没有设置。。。我想我把报税表放错地方了,但我不确定我把它放在哪里了。。。这是我的职责:

//Browser Support Code
function ajaxFunction(url,data){
    var ajaxRequest;  // The variable that makes Ajax possible!

    try{
        // Opera 8.0+, Firefox, Safari
        ajaxRequest = new XMLHttpRequest();
    } catch (e){
        // Internet Explorer Browsers
        try{
            ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try{
                ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e){
                // Something went wrong
                alert("Your browser broke!");
                return false;
            }
        }
    }

    ajaxRequest.onreadystatechange = function(){
        if(ajaxRequest.readyState == 4){
            var response = ajaxRequest.responseText

        }
    }   
    queryString = "?dta="+data;
    ajaxRequest.open("GET", url + queryString, true);
    ajaxRequest.send(null);
return(response);   
}        
然后我像这样调用函数:

    var result = ajaxFunction('call.php','1');
    alert(result);
响应在控制台中工作,它表示:

{"stage1":"550","stage2":"1500","stage3":"2000","total":"1"}
但我得到的是:反应还没有定义


有什么想法吗?

响应未定义有两个原因:

  • 语法:它在内部函数中定义,因此在外部范围中不可见。所以您的
    返回(response)
    实际上是返回(window.response)
  • 逻辑:响应是在异步回调中设置的,因此当同步函数返回时,即使在ajaxFunction本身中定义它,也不会设置响应
若要修复它,请使用最终将返回结果的回调。通过调用
success(data,textStatus,jqXHR)
作为参数传递给函数,检查如何返回结果


您还可以通过为open call check或的第三个(isAsync)参数传递“false”来强制同步请求。

因此,如果我将返回值放在if(ajaxRequest.readyState==4){}中,那么就可以了吗?太好了,现在我甚至更困惑了:p尽管我已经计算出来了!:(我所发现的只是jquery示例——看看jquery示例并将其复制到您的代码中很烦人。您正在尝试手动执行jquery.ajax调用——因此,看看如何实现这一点并没有错。MDN link也有大量使用原始XmlHttpRequest的示例。我想我只是简单地问了一个问题就可以实现它。我返回了json_编码,但如何实现它呢我是否将其转换回一个数组以使用?JSON.parse(或者对于较旧的浏览器,除了jQuery.parseJSON之外,还有实现)。