【问题标题】:Increasing Ajax request timeout in ExtJs增加 ExtJs 中的 Ajax 请求超时
【发布时间】:2013-11-03 01:04:05
【问题描述】:

ExtJs 库中是否有一个配置可以增加 Ajax 请求超时?

我尝试了以下两种配置,但都没有帮助:

Ext.override(Ext.data.Connection, {
    timeout: 60000
});

Ext.Ajax.timeout = 60000;

【问题讨论】:

    标签: ajax extjs4 timeout


    【解决方案1】:

    我使用了你提到的 2,但也不得不覆盖这些:

    Ext.override(Ext.data.proxy.Ajax, { timeout: 60000 });
    Ext.override(Ext.form.action.Action, { timeout: 60 });
    

    ExtJS 5 更新:

    看起来您现在需要为 ExtJS 5+ 使用 setTimeout() 设置 Ext.Ajax 超时,而不仅仅是设置属性:

    Ext.Ajax.setTimeout(60000);
    

    【讨论】:

    • 时间限制呢?我正在计算路线,我认为这需要很多时间才能完成......
    【解决方案2】:

    我必须做以下一项:

    Ext.Ajax.timeout= 60000; 
    Ext.override(Ext.form.Basic, { timeout: Ext.Ajax.timeout / 1000 });
    Ext.override(Ext.data.proxy.Server, { timeout: Ext.Ajax.timeout });
    Ext.override(Ext.data.Connection, { timeout: Ext.Ajax.timeout });
    

    【讨论】:

      【解决方案3】:

      我发现这是 ExtJS 4 的最佳更改(在 4.2.3 上测试):

      // Connection uses its own timeout value hardcoded in ExtJS - we remove it so that Ext.data.Connection will then
      // fallback to using Ext.Ajax.timeout, thus giving a single place for setting the timeout
      // Bonus: you can change this at runtime
      Ext.define('Monitoring.overrides.Connection', {
        override: 'Ext.data.Connection',
        constructor: function() {
          delete this.timeout;
          this.callParent(arguments);
        }
      });
      Ext.define('Monitoring.overrides.ProxyServer', {
        override: 'Ext.data.proxy.Server',
        constructor: function() {
          delete this.timeout;
          this.callParent(arguments);
        }
      });
      

      现在你可以使用 Ext.Ajax.timeout,它会改变所有的 AJAX 调用(不知道表单提交)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-29
        • 1970-01-01
        • 2014-01-15
        • 2016-04-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多