代码之家  ›  专栏  ›  技术社区  ›  richardtallent

如何重写ExtJSJSonStore超时?

  •  16
  • richardtallent  · 技术社区  · 16 年前

    我有一个JSonStore,它需要从一个耗时超过30秒的HTTP请求返回。

    在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
            })
        });
    
    4 回复  |  直到 12 年前
        1
  •  36
  •   Jonathan Julian    16 年前

    如果您希望整个应用程序的超时相同,请在 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 };
    
        2
  •  12
  •   Joram    15 年前

    不定义var中的代理或连接

    proxy:      new Ext.data.HttpProxy(
                  new Ext.data.Connection({
                              url: "search-ajax.aspx",
                              timeout: 120000 })),
    
        3
  •  2
  •   Án Bình Trọng    13 年前

    你可以定义:

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

    它在代理中包含了读卡器

        4
  •  2
  •   weeksdev    12 年前

    我知道这个问题很旧,但我想添加覆盖选项 Extjs4.2.2

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

    我在应用程序中完成了覆盖 init 但是,我认为您可以在 request .

    另外,如果您使用的是JSONP,那么这个覆盖对我来说是有效的:

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