2010-02-12 41 views
15

我有一個JsonStore需要從超過30秒的HTTP請求中返回。如何覆蓋Ext JS JsonStore超時?

在JsonStore配置上設置「timeout」屬性不會覆蓋30秒超時,也不會設置代理(而不僅僅是設置url屬性)並在代理上設置超時。

如何擴展此超時?

(我用的Ext JS 3.1.1)

var ds = new Ext.data.JsonStore({ 
    autoSave:  true, 
    method:   "POST", 
    /*url:   "search-ajax.aspx", 
    timeout:  120000,*/ 
    root:   "rows", 
    totalProperty: "results", 
    idProperty:  "primarykeyvalue", 
    proxy:  new Ext.data.HttpProxy({ url: "search-ajax.aspx", timeout: 120000 }), 
    fields:  previewColumnConfig, 
    baseParams: { 
     Command: "", 
     ID:  primaryKeyValue, 
     Entity: entityFullName, 
     vetype: ValidationEntityType, 
     vepk:  ValidationEntityPK, 
     now:  (new Date()).getTime() 
     }, 
    writer: new Ext.data.JsonWriter({ 
     encode:  true, 
     listful: false 
     }) 
    }); 

回答

35

如果你想超時時間爲您整個的應用程序是相同的,全局設置它的Ext.Ajax單。

Ext.Ajax.timeout = 120000; //2 minutes 

如果你想超時僅在單個請求進行不同的設置,你需要在VAR定義HttpProxy並修改它的一個特性傳遞到JsonStore配置之前。 conn屬性僅將選項用於該請求。

var proxy = new Ext.data.HttpProxy({ url: "search-ajax.aspx" }); 
proxy.conn = { timeout: 120000 }; 
12

沒有確定代理或一個VAR連接

proxy:  new Ext.data.HttpProxy(
       new Ext.data.Connection({ 
          url: "search-ajax.aspx", 
          timeout: 120000 })), 
2

您可以定義:

var proxy1 = new Ext.data.HttpProxy(
     { 
      url: 'yourUrl', 
      reader: { 
        type: 'json', 
        root: 'items', 
        totalProperty: 'total' 
       } 
     }); 
proxy1.timeout = 600000; 

它包括讀者代理

+0

對存在的存儲網格,你可以更新超時直接'grid.getStore()getProxy()超時= 60000'。 – 2017-08-18 12:39:36

2

我知道這個問題是老但想添加覆蓋選項我發現,在ExtJS 4.2.2

Ext.override(Ext.data.proxy.Ajax, { timeout: 120000 }); 

我完成了,不過應用init的覆蓋,我認爲你可以在任何地方前request完成這個覆蓋。

此外,如果你正在使用JSONP此覆蓋工作對我來說:

Ext.data.proxy.JsonP.timeout = 120000;