Обратный вызов Ext.data.HttpProxy при сбое - PullRequest
1 голос
/ 30 марта 2011

У меня есть следующие ExtJS. Слушатель "write" вызывается, когда ответ является успешным (ответ является JSON-подобным: {"success": true, "message": "......"}). Но как мне добавить обратный вызов, если ответ не удался? ({ "Успех": ложь, "сообщение": "......"})

tableStructure.proxy = new Ext.data.HttpProxy({
        api: {
            read: '/controller/tables/' + screenName + '/getstructure/' + table,
            create: '/controller/tables/' + screenName + '/createcolumn/' + table,
            update: '/controller/tables/' + screenName + '/updatecolumn/' + table,
            destroy: '/controller/tables/' + screenName + '/destroycolumn/' + table
        },

        listeners: {
            write: tableStructure.onWrite
        }
    });

Ответы [ 3 ]

4 голосов
/ 30 марта 2011

Вы хотите перехватить событие HttpProxy exception.

    listeners: {
        write: tableStructure.onWrite
        exception: function(proxy, type, action, options, response, arg) {
            if(type === 'remote') { // success is false
                // do your error handling here
                console.log( response ); // the response object sent from the server
            }
        }
    }

Полная документация по Ext приведена в документации по Ext.data.HttpProxy в разделе событий..

0 голосов
/ 06 июня 2014

Вы также можете установить обработчик исключений в Ext.data.Store , обертывающий HttpProxy, при условии, что вы отправите код ответа, отличный от 200.

    var store = new CQ.Ext.data.Store({
        proxy : new CQ.Ext.data.HttpProxy({
            method : "GET",
            url : '/some_url'
        }),
        reader : new CQ.Ext.data.JsonReader(),
        baseParams : {
            param : 'some value'
        }
    });

    store.on("beforeload", function() {
        CQ.Ext.getBody().mask("Please wait...", false);
    });

    store.on("exception", function() {
        CQ.Ext.getBody().unmask();
        CQ.Ext.Msg.show({
            title: 'Error',
            msg: '<span style="color:red">Bad request.</span><br/>',
            icon: CQ.Ext.Msg.ERROR,
            buttons: CQ.Ext.Msg.OK
        });
    });
0 голосов
/ 30 марта 2011

Вы должны иметь возможность использовать само событие write.Подпись события записи: write(dataproxy,action,data,response,record,options).

Вы можете получить доступ к переменной успеха из объекта действия и проверить, является ли значение истинным или ложным.Вы должны иметь возможность доступа к переменной успеха как:

action.result.success

Вы можете сделать:

if(action.result.success != true ) {
  // If success is not true
} else {
  // If success is true
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...