增加 ExtJs 中的 Ajax 请求超时

Posted

技术标签:

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

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

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

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

Ext.Ajax.timeout = 60000;

【问题讨论】:

【参考方案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 调用(不知道表单提交)。

【讨论】:

以上是关于增加 ExtJs 中的 Ajax 请求超时的主要内容,如果未能解决你的问题,请参考以下文章

ExtJS Ajax 请求超时对 Internet Explorer 没有影响

如何处理 AJAX 请求中的会话超时

单点登录Session超时,Ajax请求不能正常跳转到登录界面

jQuery_ajax请求超时

nginx配置长连接(ajax60秒请求超时)

nginx配置长连接(ajax60秒请求超时)