2010-02-12 6 views
15

У меня есть JsonStore, которому необходимо вернуться из HTTP-запроса, который занимает больше 30 секунд.Как я могу переопределить тайм-аут Ext JS Store?

Установка свойства «тайм-аут» в конфигурации JsonStore не отменяет 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 

Если вы хотите тайм-аут должен быть установлен по-разному только на один запрос, вам необходимо определить HttpProxy в вар и изменить один из его свойств, прежде чем передать его в JsonStore конфигурации. Свойство conn принимает параметры, которые будут использоваться только для этого запроса.

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

без определения прокси-сервера или соединения в вар

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'.. –

2

Я знаю, что этот вопрос старый но хотел добавить опцию переопределения, которую я нашел, что работает в ExtJS 4.2.2

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

Я закончил переопределение в применении init однако, я думаю, вы могли бы завершить это переопределение в любом месте до request.

Кроме того, если вы используете JSONP это переопределение работает для меня:

Ext.data.proxy.JsonP.timeout = 120000; 
Смежные вопросы