繁体   English   中英

如何使用ExtJS从变量中的Ajax回调获取响应文本

[英]How to get response text from ajax callback in a variable using ExtJS

我想知道是否可以从Ext.Ajax.Request调用中获取变量中的responseText 我尝试了许多方法,并且“破解”都没有成功。

例:

在这种情况下,我试图将responseText分配给accStatus变量,并且我总是变得undefined (我知道这不是正确的方法),但是我想确切地知道如何处理 (正确的方法)并将其return我的function没有问题,并且使用“简单”的方式(如果可能),如下面的代码所示。

顺便说一句,我正在使用Ext 4.2.0


有没有办法做这样的事情?

Ext.define('Util.AccountManager', { 

    singleton: true,

    getAccountStatus: function(id) {
        var accStatus;

        Ext.Ajax.request({
            url : 'rest/accounts',
            method : 'POST',
            params : {id: id},
            callback: function(o, s, r) {
                accStatus = r.responseText;
            }
        });

        return accStatus;
    }

});

Ext.onReady(function () {

    var id = '1234';
    var accStatus = Util.AccountManager.getAccountStatus(id);

    if(accStatus) {
        console.log(accStatus);
    }

});

如果有人想提供帮助,则可以使用以下URLs导入ExtJS

我也将此jsfiddle仅仅用于“测试”(或至少尝试是因为无法通过该站点发出ajax请求)。

您的getAccountStatus需要回调,因此您可以在XHR完成后做出响应。 AJAX是异步的,因此您不能期望在对getAccountStatus的调用返回之前调用成功回调。

// Will never work unless you use synchronous AJAX (which you shouldn't
// because it would block the UI while the request is pending)
var accStatus = Util.AccountManager.getAccountStatus(id);

改为执行以下操作

Ext.define('Util.AccountManager', { 

    singleton: true,

    getAccountStatus: function(id, cb) {
        Ext.Ajax.request({
            url : 'rest/accounts',
            method : 'POST',
            // async: true, // This would make your return work, but don't do it
            params : {id: id},
            callback: function(o, s, r) {
                cb(r.responseText);
            }
        });

        // Code here runs before the callback above
    }    
});

Ext.onReady(function () {    
    var id = '1234';
    var accStatus = Util.AccountManager.getAccountStatus(id, function(status){
        console.log(status);
    });
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM