在 Jquery Ajax 调用中使用 On success 函数



我有一个名为 Widget 的.js类.js在小部件中.js类我正在启动一个 errors.ascx 控件类,该类在其中定义了 JS 脚本函数"GetErrors()"。现在,当我从我的小部件.js类调用 GetErrors 时,它工作得很好。我必须使用 GetErrors() 函数的输出在小部件中填充一些控件.js。但问题是,有时 GetErrors() 需要花费大量时间来执行,并且控件会运行到我的小部件类中。 并且填充控件时没有任何数据。

所以底线是我需要知道Jquery的OnSuccess函数的确切用法。

这是我的错误.ascx 代码

var WidgetInstance = function () {
        this.GetErrors = function () {
                       $.ajax({
                url: '/Management/GetLoggedOnUsersByMinutes/',
                type: 'GET',
                cache: false,
                success: function (result) {
                    result = (typeof (result) == "object") ? result : $.parseJSON(result);
                    loggedOnUsers = result;
                }
            });
        },.....

小部件.js文件的代码是

function CreateWidgetInstance() {
    widgetInstance = new WidgetInstance();
    widgetInstance.GetErrors();
    }

现在我希望控件应该从

widgetInstance.GetErrors();

只有当它产生了结果时。

任何帮助???

你可以使用 jQuery Deferreds。 $.ajax() 实际上返回了一个 promise。因此,您可以执行以下操作:

var WidgetInstance = function () {
    this.GetErrors = function () {
                   return $.ajax({
                            url: '/Management/GetLoggedOnUsersByMinutes/',
                            type: 'GET',
                            cache: false
                   });
    },.....

然后你可以像这样处理结果...

widgetInstance.GetErrors().done(function(result){
    //process the resulting data from the request here
});

嗨,只需在 AJAX 调用中使用 async:false。它将阻止控件,直到响应到达客户端...

var WidgetInstance = function () {
        this.GetErrors = function () {
                       $.ajax({
                url: '/Management/GetLoggedOnUsersByMinutes/',
                type: 'GET',
                cache: false,
                async: false,
                success: function (result) {
                    result = (typeof (result) == "object") ? result : $.parseJSON(result);
                    loggedOnUsers = result;
                }
            });
        },.....

我为此做了一个简单的解决方案。我刚刚在我的控件的 GetErrors() 的 onSuccess 事件中调用了我的填充函数,一切都运行良好。

最新更新