您的位置:首页 > Web前端 > JavaScript

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秒,用了第三种方法才修复。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ajax extjs