Показывать возвращаемое сообщение json в div после каждого ответа ajax, сетка extjs4
Вопрос
У меня есть GridPanel, Модель, Магазин автосинхронизации с прокси-сервером 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"}}
Я хочу знать, есть ли способ отобразить значение «Сообщение» в HTML-теге div (например, my_div) после получения каждого ответа?
Решение
Вы можете использовать DOM Helper, см. sencha api: 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
содержимого этого div.
Посмотрите скрипку, чтобы поиграть: http://jsfiddle.net/PddU4/Prepend эта строка
РЕДАКТИРОВАТЬ 16 февраля 2012 г.:
Вам нужно слушать свои прокси 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