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

[ 528 查看 / 7 回复 ]

【已解决】『求教』关于Ext异步请求超时的问题
Ext发起ajax异步请求,如果请求超过超时时间,可不可以判断出来并且给出提示,告诉用户请求超时了
最后编辑alex197963 最后编辑于 2009-12-09 08:58:15
我是一尾溺水的鱼,因为丧失了思想,所以能够自由自在的流浪!
TOP
【已解决】『求教』关于Ext异步请求超时的问题

自己顶,有人了解这个吗
我是一尾溺水的鱼,因为丧失了思想,所以能够自由自在的流浪!
TOP
【已解决】『求教』关于Ext异步请求超时的问题

人气太差了。。。
我是一尾溺水的鱼,因为丧失了思想,所以能够自由自在的流浪!
TOP
【已解决】『求教』关于Ext异步请求超时的问题

顶一下。。
我是一尾溺水的鱼,因为丧失了思想,所以能够自由自在的流浪!
TOP
【已解决】『求教』关于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(){}
})
(Love me) && (Love my bug);
TOP
【已解决】『求教』关于Ext异步请求超时的问题

非常感谢您的回复!
我是一尾溺水的鱼,因为丧失了思想,所以能够自由自在的流浪!
TOP
【已解决】『求教』关于Ext异步请求超时的问题

学习
TOP