2015-03-19 147 views
0

我想要使用在ajax請求成功的var ajaxRe的值,而不是ajax請求的值,但值爲undefined。我想使用的響應在網格中加載數據,extjs:如何在ajax請求成功時訪問ajax請求成功的變量

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()成功中

,網格包含了我所需要的數據,但不被顯示的話,

我設置數據在電網的成功存儲中,並訪問外部電網。

success : function(re,action) { 
    that.editorGrid.getStore().data = respArr; 
} 

我該如何解決這個問題?

謝謝

+0

像下面提到的那樣,使用具有代理的商店並將其綁定到您的網格。如果您需要稍後訪問商店的數據,請使用'Ext.StoreManager.lookup('theStoreId')' – 2015-03-24 20:03:28

回答

2

如果數據是正確的格式試試下面

that.editorGrid.getStore().loadData(respArr); 

如果你想申請代理閱讀器來加載數據使用

that.editorGrid.getStore().loadRawData(respArr); 

的另一種方式是重新配置存儲和綁定該存儲網格

var store = Ext.create('Model', { 
      autoLoad: true, 
      data: responseJson, 
      proxy: { 
       type: 'memory', 
       reader: { 
        type: 'json' 
       } 
      } 
     }); 
that.editorGrid.bindStore(store); 
0

您不需要單獨的請求來填充(網格)存儲。在商店中定義代理,Ext負責其餘部分。您還可以查看this example,查看代碼並分析傳輸到服務器的數據並返回。

+0

我已經使用帶有存儲代理的網格,但是我正在嘗試存儲重新加載,並且不起作用。所以我想嘗試使用ajax請求。 – user777777 2015-03-19 08:45:16

+0

你是如何嘗試「存儲重新加載」的?要初始加載商店,您只需要使用autoLoad:true進行配置。當然,爲了真正加載商店,服務器響應必須遵守一些規則。請參閱答案中的示例以瞭解服務器應如何響應。 – Saki 2015-03-19 22:15:23

1

我同意薩基你應該使用商店填補網格,所以如果它不重新加載,可能會有另一個問題。

總之,要回答你的問題:只要定義Ajax請求之外ajaxRe:

var ajaxRe = ''; 
Ext.Ajax.request({ 
    ... 
    ajaxRe = re.responseText; 
    ... 
}); 

但要小心,你可能會嘗試訪問變量前值實際設置。