3

listener次のような、すべてのネットワーク要求エラーをリッスンするを作成したいと思います。

Ext.Ajax.on('requestexception', function(conn, response, options) {
    if (response.status === 555) {
        Ext.Msg.alert('test', 'test');
    }
});

上記のコードはExt.Ajax.request()、フォームの送信、URLが見つからないというエラーなどでも機能するように書き直す方法を介したリクエストに対してのみ機能します。

サーバー側には、すべてのリクエストをディスパッチするSpring MVCがあり、存在する場合はerror、のレスポンスステータス555が返されます。

form.submit({
     url: dispatcher.getUrl('savePlanRequest'),
     //headers: {'Content-Type':'multipart/form-data; accept-charset=utf-8'},
     scope: this,
     method: 'GET',
     params: {
         scan: scan_id,
         attachments: attachments_id,
         parcels: parcels_id
     },
     success: function(form, action) {
         this.fireEvent('plansaved', this);
         Ext.Msg.alert(i18n.getMsg('success'), i18n.getMsg('gsip.view.plans.NewPlanForm.success_info'))
     },
     failure: function(form, action) {
         console.log('failure');
         //Ext.Msg.alert(i18n.getMsg('failure'), action.result.msg);
     }
 });
4

2 に答える 2

2

これは機能するはずです:

Ext.override( Ext.form.action.Submit, { 
    handleResponse : function( response ) {

        var form = this.form,
            errorReader = form.errorReader,
            rs, errors, i, len, records;

        if (errorReader) {
             rs = errorReader.read(response);
             success = rs.success;
             // Do something if success is false
        }

        this.callParent ( arguments ); 
    }
});

上記のコードのほとんどをコピーした正確なメソッドのソースコードを見てください。handleResponse()

于 2012-07-24T14:23:58.800 に答える
1

私見あなたは何もオーバーライドする必要はありません。ここで説明するように、Ext.Ajaxシングルトンにリスナーを配置できます。

Ext.data.Connectionをオーバーライドする-ベストプラクティス

別のオプションは、ここで説明するようにExt.util.Observable.observe()関数を使用することです。

http://www.sencha.com/forum/showthread.php?172269-Global-connection-handler-for-500-404-403-response-codes

Ext.util.Observable.observe(Ext.data.Connection);

Ext.data.Connection.on('requestexception', function(conn, response, options, eOpts) {
    //...handle it
});
于 2013-01-15T16:01:36.833 に答える