Ответ extjs ajax с бутылкой python

Я новичок в веб-программировании, поэтому извините за наивный вопрос, я пытался искать в Интернете, но не смог найти ответ на свой основной вопрос.

Я использую extjs (для виджетов и ajax) и python (используя бутылку) на стороне сервера.

вот мое требование.

У меня есть редактор extjs EditorGrid, который имеет только один столбец (редактируемый). на индексном маршруте (бутылочном маршруте) я возвращаю словарь json, который заполняется в этой сетке и отображается, все хорошо до этого момента, теперь я хочу обновить значение этого столбца и сохранить обновленное значение на стороне сервера.

поэтому я добавил еще один маршрут в свой скрипт Python и ajax_reply в качестве URL-адреса моего запроса ajax в javascript (код ниже).

теперь мой вопрос заключается в том, как мне отправить ответ клиенту, скажем, например, я хочу отправить отказ клиенту (т.е. обновление не было успешным на сервере, и я хочу отправить ответ ajax о том, что обновление не удалось. я пытался отправить случайный материал из мой маршрут ajax_reply, но на клиенте всегда вызывается успех.

Я не понимаю, как отправить ответ json из функции ajax_repose, а затем снова проанализировать его в моей функции успеха или отказа javascript, чтобы действовать соответствующим образом.

любая помощь очень ценится

@bottle.route('/ajax_reply', method='POST')
def update_column():
    return { 'success' : False }


var grid = new Ext.grid.EditorGridPanel({
                tbar: [{ text : 'Remove' }, {text : 'Add'}],
                ds: ds,
                frame:true,
                listeners: {
                  afteredit : function(e){
                        Ext.Ajax.request({
                        url : '/ajax_reply',
                        params : {
                               action: 'update',
                                id : e.record.id,
                                field: e.field,
                                value : e.value
                        },
                        success : function(resp, opt){
                           e.record.commit();
                           Ext.Msg.alert('SUCCESS', 'success...');
                        },
                        failure: function(resp, opt){
                           Ext.Msg.alert('ERROR', 'error...');
                           e.record.reject();
                        }
                  });
                }
                },

person user424060    schedule 12.05.2012    source источник


Ответы (1)


Если вы используете Ext.Ajax.request, вам нужно самостоятельно проанализировать ответ. Даже если сервер не может обновить запись, но сгенерировал какой-то правильный ответ

{ success: false, msg: 'Failed to save record' }
  • это все равно попадет в вашу функцию success. Потому что сам запрос Ajax прошел успешно.

Однако, если вы используете сетку и редакторы - я бы рекомендовал посмотреть на другой способ сделать это - проверить документацию для удаленных хранилищ, читателей/писателей и т. д.

person sha    schedule 12.05.2012