Показывать возвращенное json сообщение в div после каждого ответа ajax, сетка extjs4 - PullRequest
2 голосов
/ 16 февраля 2012

У меня есть gridpanel, Model, Autosync Store с ajax-прокси с функциями чтения и обновления и плагином RowEditing в extjs4.

Рассмотрим следующий json:

{ "success": true,"Message":"Grid Data Successfully updated.", "users": {"uname":"jdoe","fname":"John","lname":"Doe","SSN":125874,"mail":"jdoe@example.org"},{"uname":"jsmith","fname":"Jack","lname":"Smith","SSN":987456,"mail":"smith@example.com"}} 

Я хочу знать, есть ли способ отобразить значение «Message» в тег HTML div (например, my_div) после полученияответ

1 Ответ

2 голосов
/ 16 февраля 2012

Вы можете использовать DOM Helper, см. Api sencha: http://docs.sencha.com/ext-js/4-0/#!/api/Ext.DomHelper

Ext.onReady(function(){
    Ext.DomHelper.insertHtml('beforeBegin', Ext.getDom('test'), "Prepend this string"); 
});​

Выше кода получит HTML-элемент с идентификатором test и вставит строку Prepend this string beforeBegin содержимого этого раздела.

См. скрипку, чтобы поиграть: http://jsfiddle.net/PddU4/Prepend эта строка

РЕДАКТИРОВАТЬ 2012-02-16:

Вам необходимо прослушать прокси success и failure: (вы также можете использовать слушатель при загрузке вашего магазина или при обновлении)

listeners: {
    success: function( response, options ){     
       console.log(response);
    },
    failure: function( response, options ){
        console.log(response);
    },
}

РЕДАКТИРОВАТЬ НА ОСНОВЕ ВАШЕГОКОММЕНТАРИЙ:

Сначала убедитесь, что вы правильно настроили свои successProperty и messageProperty в своем считывателе.Затем реализуйте прослушиватель там, где вы хотите, обновите, удалите, добавьте, исключение и т. Д.:

(настройте прослушиватель в прокси-объекте)

listeners   : {
    update : function(thisStore, record, operation ) {
        console.log('Update happened');
        console.log(record);
        console.log(operation);
    },
    save : function() {
        console.log('Save happened');
    },
    exception : function(dataproxy, type,  action, options,response,  arg) {
        console.log('Error happened');
        console.log(response);
                    doJSON(result.responseText);
    },
    remove : function() {
        console.log("Record removed");
    }
}

Когда вы console.log(response), вы увидите объект ответа.Это будет ваш фактический JSON, поэтому вам нужно проанализировать его (как в методе doJSON()):

 function doJSON(stringData) {
    try {
        var jsonData = Ext.util.JSON.decode(stringData);
        Ext.MessageBox.alert('Success', 'Your server msg:<br />jsonData.date = ' + jsonData.message);
    }
    catch (err) {
        Ext.MessageBox.alert('ERROR', 'Could not decode ' + stringData);
    }
  }

Пожалуйста, ознакомьтесь с этим AJAX руководством: http://www.sencha.com/learn/legacy/Manual:Core:Ext.Ajax

...