2013-06-28 71 views
4

我坚持了AJAX/HTTP异常处理一点点:我试图在全球范围内的ExtJS处理401异常,并尝试使用下面的代码来做到这一点:ExtJS的处理HTTP响应全球

Ext.Ajax.on('requestexception', function (conn, response, options) { 
    if (response.status === 401) { 
     log.console = '401 recieved'; 
    } 
}); 

它工作正常,并处理401,但只有当你明确地使Ext.Ajax.request()。它不处理ajax商店...所以问题来了:我可以处理所有401 http错误来到我的应用程序?谢谢!

+0

什么版本的ExtJS您使用的是?我已经在我的应用程序中完成了这个工作,但是Extjs 4和3的代码是不同的 – Reimius

+0

@Reimius,现在我使用的是Ext JS ver。 4.1。你认为这样一个基本的东西可以改写/重写吗? –

+0

我们重写了我们的应用程序中Ext.data.Connection中的一个方法,所有使用ajax的方法都从该类继承。如果我在这里得到时间,我会举一个例子。 – Reimius

回答

2

您将需要对您使用Ajax连接的任何Ext类进行错误处理。其中一些可能包括Ext.data.Connection,Ext.data.proxy.AjaxExt.form.action.Action

例如,Ext.data.proxy.Ajax,可以覆盖类在requestexception添加一个侦听器:

Ext.define('MyApp.override.AjaxProxy', { 
    override: 'Ext.data.proxy.Ajax', 
    constructor: function(config) { 
     this.callParent(config); 
     this.on('requestexception', MyApp.utils.Utils.handle401Error); 
    } 
}) 
+0

是的,我考虑过这样的解决方案......只是认为我们对普通的AJAX有一些东西。感谢您的回复,但这真的很有帮助! –