2013-06-28 76 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有一些東西。感謝您的回覆,但這真的很有幫助! –