使用listener覆盖Ajax.js,以使requesttexception无法正常工作

时间:2014-11-17 12:23:00

标签: javascript ajax extjs

这包含在主应用程序的require语句中。它加载Ajax然后死掉。我正在使用 Extjs 5.代码位于ui /下的覆盖文件夹中。它似乎无法在与app相同级别的文件夹中找到代码。

Ext.define('Ext.overrides.Ajax', {
    override : 'Ext.data.Connection',
    listeners : {
        requestexception : function(response) {

        var error = response.status + ' - ' + response.statusText;
        // if response status is 202 (Accepted), should
        // have warning message
        if (response.status == 202) {
            Ext.Msg.show({
                title : 'REST Warning message',
                msg : 'Ajax Request Exception! ' + error,
                cls : 'msg-wrap',
                buttons : Ext.Msg.OK,
                icon : Ext.Msg.WARNING
            });
        }

        if (response.status > 400) {
            var errorData = Ext.JSON.decode(response.responseText);

            Ext.Msg.show({
                title : 'REST Error message',
                msg : 'Ajax Request Exception! ' + errorData,
                cls : 'msg-wrap',
                buttons : Ext.Msg.OK,
                icon : Ext.Msg.ERROR
            });
            }
        }
    }
});

1 个答案:

答案 0 :(得分:1)

我有类似的问题。在ExtJS 4中,我配置了与你的配置一样的Ext.Ajax覆盖。

为了让它与ExtJS 5一起使用,我阅读http://www.sencha.com/blog/top-support-tips-october-2014并成功将我的覆盖结构更改为以下内容:

 Ext.define('Ext.override.AjaxOverride', {
    override: 'Ext.Ajax'
    // omitted overridden properties...

}, function() {
    var me = this;

    me.setExtraParams({
        foo: "bar" 
    });

    me.setUrl('MyUrl');
    me.setTimeout(600000);

    me.on({
        scope: me,
        requestexception: function(conn, response, opts) {
            // my exception handling
        }
    });
});