javascript - 尝试从另一个命名空间中的方法获取 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(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);
});

关于javascript - 尝试从另一个命名空间中的方法获取 json 结果,但出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2812043/

相关文章:

javascript - 如何在另一个原型(prototype)中创建可调用原型(prototype)方法

jquery - 单击 div 上的单选按钮

c# - WindowsIdentity.Impersonate in ASP.NET 随机 "Invalid token for impersonation - it cannot be duplicated"

javascript - 如何在 map 上放置一个跟随指针的方 block

javascript - HTML5 视频进度滑动点击功能在 Chrome 中不起作用

javascript - jQuery TextExt 插件 : KeyPress

javascript - 当光标到达图像时,是否可以使图像随光标移动?

PHP无限Ajax循环: any problems?

javascript - 为什么 'this' 始终是 Javascript 类原型(prototype)中的窗口

javascript - JavaScript/jQuery 事件排序有问题吗?