2010-02-12 14 views
15

Ho un JsonStore che deve tornare da una richiesta HTTP che impiega più di 30 secondi.Come posso ignorare il timeout di Ext JS JsonStore?

L'impostazione della proprietà "timeout" sulla configurazione di JsonStore non sovrascrive il timeout di 30 secondi, né l'impostazione di un proxy (piuttosto che l'impostazione della proprietà url) e il timeout sul proxy.

Come posso prolungare questo timeout?

(sto usando 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 
     }) 
    }); 

risposta

35

Se si desidera che il timeout per essere lo stesso in tutta l'intera applicazione, impostarlo a livello globale sul Ext.Ajax Singleton.

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

Se si desidera che il timeout da impostare in modo diverso solo su una singola richiesta, sarà necessario definire il HttpProxy in una var e modificare una delle sue proprietà prima di passarlo nel JsonStore config. La proprietà conn accetta opzioni da utilizzare solo per tale richiesta.

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

senza definire il proxy o la connessione in una var

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

è possibile definire:

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

Si includono lettore in delega

+0

per il deposito esistente sulla griglia è possibile aggiornare direttamente timeout 'grid.getStore() getProxy() timeout = 60000'.. –

2

So che questa domanda è vecchia ma volevo aggiungere l'opzione di override che ho trovato funziona in ExtJS 4.2.2

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

ho completato l'override nella Domanda init però, penso che si potrebbe completare questa esclusione ovunque prima del request.

Inoltre, se si utilizza JSONP questa esclusione funziona per me:

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