Javascript 试图从另一个命名空间中的方法获取json结果时出现问题

Javascript 试图从另一个命名空间中的方法获取json结果时出现问题,javascript,jquery,ajax,json,Javascript,Jquery,Ajax,Json,我有一个单独的.js文件和用于json请求的名称空间。 我有另一个.js文件和名称空间用于实际逻辑 我似乎无法在我的逻辑层中得到结果 var jsonResult = Blah.Data.LoadAggregates(); alert(jsonResult); alert(jsonResult.d.length); alert(jsonResult.length); 以上所有调用都返回未定义。 Blah.RegisterNamespace("Blah.Data"); (function(D

我有一个单独的.js文件和用于json请求的名称空间。 我有另一个.js文件和名称空间用于实际逻辑

我似乎无法在我的逻辑层中得到结果

var jsonResult = Blah.Data.LoadAggregates();

alert(jsonResult);
alert(jsonResult.d.length);
alert(jsonResult.length);
以上所有调用都返回未定义。

Blah.RegisterNamespace("Blah.Data");

(function(Data) {


    Data.LoadAggregates = function() {

        $.ajax({
            type: "POST",
            url: "asdf.asmx/GetAggregates",
            data: "{}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(data) {
                ???????

            },
            error: function(msg) {
                alert("error" + msg);
            }
        });

    };

})(Blah.Data);  

AJAX调用是异步的,这意味着
$。AJAX
调用不会等待服务器响应

因此,您的
LoadAggregates
函数在服务器应答之前完成执行

为了获得服务器的响应,
LoadAggregates
函数需要采用回调参数,就像
$.ajax
那样

例如:

Data.LoadAggregates = function(callback) {

    $.ajax({
        type: "POST",
        url: "asdf.asmx/GetAggregates",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(data) {
            //Do something to the data if you want to

            callback(data);        //You can pass any parameters you want
        },
        error: function(msg) {
            alert("error" + msg);
        }
    });

};
然后你会这样称呼它:

Blah.Data.LoadAggregates(function(jsonResult) {
    alert(jsonResult.length);
});

AJAX调用是异步的,这意味着
$。AJAX
调用不会等待服务器响应

因此,您的
LoadAggregates
函数在服务器应答之前完成执行

为了获得服务器的响应,
LoadAggregates
函数需要采用回调参数,就像
$.ajax
那样

例如:

Data.LoadAggregates = function(callback) {

    $.ajax({
        type: "POST",
        url: "asdf.asmx/GetAggregates",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(data) {
            //Do something to the data if you want to

            callback(data);        //You can pass any parameters you want
        },
        error: function(msg) {
            alert("error" + msg);
        }
    });

};
然后你会这样称呼它:

Blah.Data.LoadAggregates(function(jsonResult) {
    alert(jsonResult.length);
});

非常感谢,我觉得这与时间有关:)非常感谢,我觉得这与时间有关:)