ExtJs 中 Ajax 连接超时设置与问题排查

本文介绍了在ExtJS中如何处理Ajax请求超时的问题。默认情况下,Ext.data.Connection的timeout设置为30秒,当后台数据查询超过这个时间会报错。解决方法包括:1) 在应用级别全局设置Ext.Ajax.timeout;2) 在单独的请求中指定timeout;3) 在使用Ext.data.Store时,在proxy中配置timeout。在实际项目中,若Store加载数据字典时遇到超时,需要确保在加载控制器之前设置超时时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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秒,用了第三种方法才修复。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值