在 Extjs 中显示错误消息的最佳方式是啥?

Posted

技术标签:

【中文标题】在 Extjs 中显示错误消息的最佳方式是啥?【英文标题】:what could be the best way to show error message in Extjs?在 Extjs 中显示错误消息的最佳方式是什么? 【发布时间】:2014-11-20 07:05:52 【问题描述】:

我正在使用 store.synch() 方法来发布数据。 并且从服务器端完成验证,目前我正在使用消息框来显示错误消息。 现在我想要一些不同的方式来显示错误,但不是 markInvalid() 因为为此我还必须更改每个 js 字段和 api。 那么markInvalid()有什么替代方法吗?

【问题讨论】:

【参考方案1】:

Extjs 数据存储提供了监听器,其中一个监听器是 exception(适用于 ExtJs

这里是代码。

listeners:  //Exception Handler for the Ajax Request
    exception: function(proxy, response, operation)
        var error = Ext.decode(response.responseText);
        Ext.MessageBox.show(
            title: 'REMOTE EXCEPTION',
            msg: error.message,
            icon: Ext.MessageBox.ERROR,
            buttons: Ext.Msg.OK
        );
    

顺便说一句,我没有明白什么是 ma​​rkInvalid()

【讨论】:

【参考方案2】:

您好Naresh Tank,我对您的问题的解决方案是监控所有 ajax 请求。这样,无论来自商店还是表单,您都可以发送您想要的错误消息。

希望对你有所帮助。

在 app.js 上

init: function() 
    this.addAjaxErrorHandler(this);
,
addAjaxErrorHandler: function(object) 
    Ext.Ajax.on('requestexception', function(conn, response, options, e) 

        var statusCode = response.status,
            errorText = null,
            captionText = response.statusText;

        if (statusCode === 0 || statusCode === 401) 
            Ext.Ajax.abortAll();
        
        if(response.statusText==="Authorization Required")
                Ext.Ajax.abortAll();
        
        // 404 - file or method not found - special case
        if (statusCode == 404) 
            Ext.MessageBox.alert('Error 404', 'URL ' + response.request.options.url + ' not found');
            return;
        

        if (response.responseText !== undefined) 
            var r = Ext.decode(response.responseText, true);

            if (r !== null) 

                errorText = r.ErrorMessage;
            

            if (errorText === null)
                errorText = response.responseText;
        

        if (!captionText)
            captionText = 'Error ' + statusCode;

        Ext.MessageBox.alert(captionText, errorText);
    ,
                object);
    Ext.Ajax.on('requestcomplete', function(conn, response, options, e) 

        var statusCode = response.status,
            errorText = null,
            captionText = response.statusText;

        if (response.responseText !== undefined) 
            var r = Ext.decode(response.responseText, true);

            if (r !== null && r.success === false) 
                try
                    if(typeof r.data[0].idUsr !== 'undefined')
                        return;
                catch(e)
                errorText = r.msg;

                if (errorText === null)
                    errorText = response.responseText;
                if (!captionText)
                    captionText = 'Error ' + statusCode;

                Ext.MessageBox.alert(captionText, errorText);
            
        
    ,
                object);

;

【讨论】:

以上是关于在 Extjs 中显示错误消息的最佳方式是啥?的主要内容,如果未能解决你的问题,请参考以下文章

在 IOS 中存储聊天消息和对话的最佳方式是啥

在 FIFO 排队系统中,实现优先级消息传递的最佳方式是啥

在 Biztalk 编排中创建新消息的最佳方式是啥?

在同一条消息中从嵌入式代理接收消息的最佳方式是啥?(ActiveMQ)

一次向所有用户的设备发送消息的最佳方式是啥?

获得行动结果的最佳方式是啥?