ExtJs 中 Ajax 连接超时设置与问题排查
2015-08-05 14:42
513 查看
ExtJS做Ajax请求时,Ext.Ajax.request()调用Ext.data.Connection.request()方法。 在Ext.data.Connection中默认timeout
: 30000,,如果后台数据查询时间超过30秒,ExtJS就会报错。
这就需要修改ExtJS的超时时间:
1. 更改默认值的方式:Ext.Ajax.timeout=120000; //120秒
Ext.application({
name: ' ........',
appFolder: ' ........ ',
stores: [],
controllers: ['MainCtrl'],
launch: function () {
Ext.Ajax.timeout=120000; //120秒
........
}
}); 可以在application中修改。
2.直接在request方法中修改 当前请求的超时时间:
Ext.Ajax.request({
url: '........ ',
success: function(){........ },
failure: function(){........ },
timeout: 300000
});
3. 使用 Ext.data.Store 时:在proxy 对象属性中直接修改。
Ext.define( '........ ',
{
extend:'Ext.data.Store',
fields:[ ........ ],
proxy: {
actionMethods:{read:'POST'},
type: 'ajax',
reader: {
type: 'json',
root: 'data'
},
timeout:1200000,
url: '........'
},
autoLoad: true
});
在项目中,遇到过这种情况,在MainCtrl.js 中加载了多个全局 Store来存储数据字典,其中一个数据比较大,经常30秒就超时。排查过程中才发现,
Ext.application({
name: ' ........',
appFolder: ' ........ ',
stores: [],
controllers: ['MainCtrl'],
launch: function () {
Ext.Ajax.timeout=120000; //120秒
........
}
}); 虽然在application 的launch 方法中 修改了 超时时间,但MainCtrl.js的加载还在修改
超时时间之前,导致在MainCtrl.js中
Store加载数据 的请求超时时间还是30秒,用了第三种方法才修复。
: 30000,,如果后台数据查询时间超过30秒,ExtJS就会报错。
这就需要修改ExtJS的超时时间:
1. 更改默认值的方式:Ext.Ajax.timeout=120000; //120秒
Ext.application({
name: ' ........',
appFolder: ' ........ ',
stores: [],
controllers: ['MainCtrl'],
launch: function () {
Ext.Ajax.timeout=120000; //120秒
........
}
}); 可以在application中修改。
2.直接在request方法中修改 当前请求的超时时间:
Ext.Ajax.request({
url: '........ ',
success: function(){........ },
failure: function(){........ },
timeout: 300000
});
3. 使用 Ext.data.Store 时:在proxy 对象属性中直接修改。
Ext.define( '........ ',
{
extend:'Ext.data.Store',
fields:[ ........ ],
proxy: {
actionMethods:{read:'POST'},
type: 'ajax',
reader: {
type: 'json',
root: 'data'
},
timeout:1200000,
url: '........'
},
autoLoad: true
});
在项目中,遇到过这种情况,在MainCtrl.js 中加载了多个全局 Store来存储数据字典,其中一个数据比较大,经常30秒就超时。排查过程中才发现,
Ext.application({
name: ' ........',
appFolder: ' ........ ',
stores: [],
controllers: ['MainCtrl'],
launch: function () {
Ext.Ajax.timeout=120000; //120秒
........
}
}); 虽然在application 的launch 方法中 修改了 超时时间,但MainCtrl.js的加载还在修改
超时时间之前,导致在MainCtrl.js中
Store加载数据 的请求超时时间还是30秒,用了第三种方法才修复。
相关文章推荐
- 解决Ajax悬停效果,无法遮蔽FLASH的问题
- 再谈Jquery Ajax方法传递到action(补充)
- extjs grid取到数据而不显示的解决
- Dom在ajax技术中的作用说明
- 使用Ajax实时检测"用户名、邮箱等"是否已经存在
- 探讨Ajax中同步与异步之间的区别
- 原生AJAX写法实例分析
- 探秘ajax跨域请求
- Ajax中浏览器和服务器交互详解
- ajax实现点击不同的链接让返回的内容显示在特定div里
- ajax 动态传递jsp等页面使用id辨识传递对象
- AJAX简单应用实例-弹出层
- ExtJS下grid的一些属性说明
- AJAX初级教程之初识AJAX
- Ajax无刷新分页的性能优化方法
- Extjs在exlipse中设置自动提示的方法
- jquery对ajax的支持介绍
- 常用Extjs工具:Extjs.util.Format使用方法
- extjs DataReader、JsonReader、XmlReader的构造方法
- 学习ExtJS(一) 之基础前提