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);