extjs:如何在 ajax 请求成功、ajax 请求之外访问变量
extjs : How to access a variable in ajax request success, outside the ajax request
我想使用 ajax 请求成功中的 var ajaxRe
的值,
在 ajax 请求之外,但值为 undefined
。我想使用响应在网格中加载数据,
Ext.Ajax.request({
url : myUrl,
params : {
myParamList
},
success : function(re,action) {
var ajaxRe = re.responseText;
...
var respArr = ..;
},
failure : function(form,action) {
console.log("fail");
}
});
当我成功打印grid.getStore()
时,网格包含我需要的数据,但没有显示,
我在grid的store里面设置数据成功,在外面访问grid。
success : function(re,action) {
that.editorGrid.getStore().data = respArr;
}
我该如何解决这个问题?
谢谢
您不需要单独的请求来填充(网格)存储。在商店上定义一个代理,Ext 会处理剩下的事情。您还可以查看 this example,查看代码并分析哪些数据传输到服务器并返回。
我同意 Saki 的观点,你应该使用商店来填充网格,所以如果它没有重新加载,可能还有另一个问题。
无论如何,回答你的问题:只需在 ajax 请求之外定义 ajaxRe:
var ajaxRe = '';
Ext.Ajax.request({
...
ajaxRe = re.responseText;
...
});
但请注意,您可能会在实际设置值之前尝试访问变量。
如果数据格式正确,请尝试以下
that.editorGrid.getStore().loadData(respArr);
如果您想应用代理 reader 来加载数据,请使用
that.editorGrid.getStore().loadRawData(respArr);
另一种方法是重新配置商店并将该商店绑定到网格
var store = Ext.create('Model', {
autoLoad: true,
data: responseJson,
proxy: {
type: 'memory',
reader: {
type: 'json'
}
}
});
that.editorGrid.bindStore(store);
我想使用 ajax 请求成功中的 var ajaxRe
的值,
在 ajax 请求之外,但值为 undefined
。我想使用响应在网格中加载数据,
Ext.Ajax.request({
url : myUrl,
params : {
myParamList
},
success : function(re,action) {
var ajaxRe = re.responseText;
...
var respArr = ..;
},
failure : function(form,action) {
console.log("fail");
}
});
当我成功打印grid.getStore()
时,网格包含我需要的数据,但没有显示,
我在grid的store里面设置数据成功,在外面访问grid。
success : function(re,action) {
that.editorGrid.getStore().data = respArr;
}
我该如何解决这个问题?
谢谢
您不需要单独的请求来填充(网格)存储。在商店上定义一个代理,Ext 会处理剩下的事情。您还可以查看 this example,查看代码并分析哪些数据传输到服务器并返回。
我同意 Saki 的观点,你应该使用商店来填充网格,所以如果它没有重新加载,可能还有另一个问题。
无论如何,回答你的问题:只需在 ajax 请求之外定义 ajaxRe:
var ajaxRe = '';
Ext.Ajax.request({
...
ajaxRe = re.responseText;
...
});
但请注意,您可能会在实际设置值之前尝试访问变量。
如果数据格式正确,请尝试以下
that.editorGrid.getStore().loadData(respArr);
如果您想应用代理 reader 来加载数据,请使用
that.editorGrid.getStore().loadRawData(respArr);
另一种方法是重新配置商店并将该商店绑定到网格
var store = Ext.create('Model', {
autoLoad: true,
data: responseJson,
proxy: {
type: 'memory',
reader: {
type: 'json'
}
}
});
that.editorGrid.bindStore(store);