如何在 Sencha Touch 2 的 Ajax 请求中捕获请求异常?

Posted

技术标签:

【中文标题】如何在 Sencha Touch 2 的 Ajax 请求中捕获请求异常?【英文标题】:How do I trap a requestexception in an Ajax request in Sencha Touch 2? 【发布时间】:2012-09-09 09:12:14 【问题描述】:

在我的 Sencha Touch 应用程序中,如果设备连接到 wifi 但没有互联网连接,Ext.device.Connection.isOnline() 将返回 true - 所以我的 Ajax 调用挂起。我正在尝试捕获 requestexception 事件,以便可以优雅地处理错误,但无法使其正常工作。代码如下:

Ext.Ajax.request(
                url:    [my url],
                jsonData: ,
                params:
                    op:     'myop'

                ,

                method:"POST",
                success:function(response, opts)
                    // all good

                ,
                failure:function(response, opts)
                    // failed
                ,

                listeners: 
                    requestexception: function(connection, response, options,  eOpts) 


                        switch(response.status) 
                            case 0 :
                              Ext.Msg.alert('Error Loading', 'No Internet connection.');
                              break;

                            default :
                              Ext.Msg.alert('Whoops!', 'An unexpected error has occurred.');
                          

                    
                


            );

不知道我做错了什么!

谢谢 马特

【问题讨论】:

【参考方案1】:

Ext.define('MyApp.store.MyJsonStore',

extend: 'Ext.data.Store',

config: 
    storeId: 'MyJsonStore',
    proxy: 
        type: 'ajax',
        reader: 
            type: 'json'
        
    
,

constructor: function() 
    var me = this;
    me.callParent(arguments);
    me.getProxy().on([
        fn: 'onAjaxproxyException',
        event: 'exception',
        scope: me
    ]);
,

onAjaxproxyException: function(server, response, operation, options) 
             //Your code here

);

【讨论】:

以上是关于如何在 Sencha Touch 2 的 Ajax 请求中捕获请求异常?的主要内容,如果未能解决你的问题,请参考以下文章

在 Sencha Touch 2 中更改选项卡时发出 Ajax 请求

无法在 Sencha-Touch2 中使用 Ext.Ajax 运行 javascript?

Sencha Touch 2 如何获取响应标头

如何在 Sencha Touch Ajax 请求中发现 302 响应

在 sencha touch 2 中加载外部 url

在 Sencha Touch 1.1 中使用 AJAX 代理从商店中删除记录