我想知道我是否可以从变量responseText
调用中获取Ext.Ajax.Request
。我尝试了很多方法," hacks" 没有成功。
在这种情况下,我正在尝试将responseText
分配给accStatus
变量,我总是得到undefined
(我知道这是 NOT 正确的方法)但我想确切地知道如何处理这个(正确的方法)和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
个请求。
答案 0 :(得分:2)
您的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);
});
});