gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 17:38:32 25 4
gpt4 key购买 nike

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

示例:

在这种情况下,我试图将 responseText 分配给 accStatus 变量,但我总是得到 undefined(我知道这是不是 正确的方法)但我想确切地知道如何处理这个(正确的方法)和返回它在我的 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);
}

});

如果有人想在这方面提供帮助,您可以使用以下 URL 导入 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);
});
});

关于javascript - 如何使用 ExtJS 从变量中的 ajax 回调获取响应文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21540528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com