为什么我不能返回Json对象?

时间:2011-02-16 21:23:29

标签: jquery json return

当我尝试从函数返回对象时,我得到了未定义。而且我很确定该对象不是空的,否则alert(response.html);不应该正常工作。

var Core = {
    "Ajax" : function(url, data){
        $.ajax({
            type: "POST",
            url: host + url,
            data: data,
            success: function(json){
                var response = $.parseJSON(json);
                if(response.status == "200"){
                    alert(response.html);
                    return response;
                }
                else{
                    alert(response.html);
                    return false;
                }
            },
            error:function (xhr, ajaxOptions, thrownError){
                alert(xhr.status);
            }
        });
    }
};

3 个答案:

答案 0 :(得分:6)

您可能误解了Ajax的概念,这是异步的。

请求完成后,浏览器将调用成功回调。你在成功回调中返回的任何东西都会消失。

无法将某些内容返回到发起请求的代码行 - 当成功回调触发时,您已经超过该行。

答案 1 :(得分:2)

您无法从异步函数返回内容。调用$.ajax()后调用它的函数 - (几乎)总是在收到响应之前返回。 success回调中的响应执行任何操作。

PS:将dataType: 'json'添加到您的ajax参数并使用json.status - 无需自行解析。

除此之外,使用Firebug的控制台检查您实际从服务器返回的内容(alert() 不是调试器)

答案 2 :(得分:0)

你不能从$.ajax电话中返回任何内容,它是异步的。您需要让它调用另一个回调函数并将其传递给response

此外,您不需要$.parseJSON(json)。只需设置dataType: 'json',jQuery就会为你解析JSON。