修改ExtJS Ajax请求超时时间 Ext.Ajax.timeout属性

ExtJS用Ajax请求的时候,默认的超时时间是30秒,如果客户端的请求时间超过30秒就会报错。

这个30秒的定义可以在 Ext.data.Connection 中查到。

Ext.define('Ext.data.Connection', {
mixins: {
observable: 'Ext.util.Observable'
},

statics: {
requestId: 0
},

url: null,
async: true,
method: null,
username: '',
password: '',

/**
* @cfg {Boolean} disableCaching
* True to add a unique cache-buster param to GET requests.
*/
disableCaching: true,

/**
* @cfg {Boolean} withCredentials
* True to set `withCredentials = true` on the XHR object
*/
withCredentials: false,

/**
* @cfg {Boolean} cors
* True to enable CORS support on the XHR object. Currently the only effect of this option
* is to use the XDomainRequest object instead of XMLHttpRequest if the browser is IE8 or above.
*/
cors: false,

/**
* @cfg {String} disableCachingParam
* Change the parameter which is sent went disabling caching through a cache buster.
*/
disableCachingParam: '_dc',

/**
* @cfg {Number} timeout
* The timeout in milliseconds to be used for requests.
*/
timeout : 30000,

timeout : 30000,

如果一个ajax请求时间超过30秒就需要修改超时时间:

有2种方法:

1:在每次Ajax请求的时候加timeout属性,设置为较高的值,如下所示。

Ext.Ajax.request({
url: ‘somepage.php’,
timeout: 100000000,//在这里定义为你需要的值,一般不要超过1800000,apache服务器会断开超过这个值的链接
headers: {
‘Referer’:'http://somehost.com/somepage’
},
params: { id: 1 }
});

2.修改全局超时时间:

Ext.Ajax.timeout = 180000;

把上面的代码加到某个全局函数当中。

这样你的ajax请求超时时间为180秒,也即3分钟,但是设置这么长的超时时间的时候你也要考虑是否真的需要这么长时间,一般用户不会等待这么长时间。

变相的一个解决办法是:把请求提交到服务器立即返回,然后美几秒就查询一次状态,等完成之后再给客户一个提醒也是一个好办法。

Extjs ajax 默认超时时间

Extjs ajax 超时默认时间

Extjs ajax请求 默认超时时间

Extjs ajax请求 默认超时时间为 30000 微妙

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>