打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
【已解决】『求教』关于Ext异步请求超时的问题 - Ext2.x求助讨论区 - 中国最大的...
userphoto

2010.01.29

关注
【已解决】『求教』关于Ext异步请求超时的问题

Extjs本身并没有对响应超时做单独的处理,而是会和其他异常处理一样,是返回一个status为-1 statusText为transaction aborted来标识。超时时会触发Ajax请求的failure回调,从参数中可以获取status和statusText这两个属性。可以用这个来判断超时,不过这个并不准确,因为有别的异常状态也会产生这样的结果。如果想要确切的超时响应,那就只有自己去处理了,最简单的办法就是将Ext.lib.Ajax.abort这个方法进行重写

Ext.lib.Ajax.abort=function(o, callback, isTimeout)
        {   
             
            if (this.isCallInProgress(o)) {
                o.conn.abort();
                window.clearInterval(this.poll[o.tId]);
                delete this.poll[o.tId];
                if (isTimeout) {
                    delete this.timeout[o.tId];
                  var obj = {tId:0,status:408,statusText:"timeout"};
                     if(callback.argument){
                         obj.argument=callback.argument;
                     }
                    if (!callback.scope) {
                        callback.failure(obj);
                    }
                    else {
                        callback.failure.apply(callback.scope, [obj]);
                    }
                    return true;
                }

                this.handleTransactionResponse(o, callback, true);

                return true;
            }
            else {
                return false;
            }
        };

给你一个简单的参考吧,在这个方法之后的Ajax请求超时会有响应,也是会跳到Ajax请求的failure回调中,在这里判断xhr对象的status为408 statusText为timeout,通过这两个之一进行判断即可。只是作为一个简单的参考,可以在此基础上进行修改。也可以跳到success回调中,那就看你想怎么处理了
(Love me) && (Love my bug);
TOP
【已解决】『求教』关于Ext异步请求超时的问题

Ext.Ajax.request({
  url : 'xxx',
  params : {},
  failure : function(res){
    if(res.status==408){alert("响应超时!");return false;}
  },
  success : function(){}
})
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
使用Ajax异步请求
编程技巧:用JQuery异步实现顺序加载外部脚本
jQuery学习之jQuery Ajax用法详解
ajax学习笔记
使用Ajax请求数据
关于在for循环里调用ajax时只能取到最后一个数据的bug的解决方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服