2012-02-16 38 views
1

我有一個gridpanel,一個Model,一個自動同步存儲,帶有讀取和更新函數的ajax代理和一個extjs4中的RowEditing插件。在每個Ajax響應後顯示json返回的消息在div中,extjs4 grid

考慮以下JSON:

{ "success": true,"Message":"Grid Data Successfully updated.", "users": {"uname":"jdoe","fname":"John","lname":"Doe","SSN":125874,"mail":"[email protected]"},{"uname":"jsmith","fname":"Jack","lname":"Smith","SSN":987456,"mail":"[email protected]"}} 

我想知道是否有一種方法接收每個響應後呈現「消息」的一個HTML div標籤(my_div例如)的值?

+0

你的意思的通知或喜歡這裏「乾杯」的消息: http://docs.sencha.com/ext-js/4-0/#!/example/message-box/msg-box.html – adis 2012-02-16 18:19:19

+0

通知可能不是一個壞主意。但用戶可能會在第一次編輯的響應到達之前更新一些行。在這種情況下,我不想中斷用戶。看起來,將新消息附加到html div標記是一個好主意,並使用戶確認成功更新(創建事件日誌)。 – danrah 2012-02-16 18:30:28

回答

2

您可以使用DOM助手,請參閱煎茶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元素ID test,它會插入字符串這個div的內容Prepend this stringbeforeBegin

見小提琴打轉轉:http://jsfiddle.net/PddU4/Prepend這串

編輯2012-02-16:

你需要聽你的代理successfailure:(你也可以實現一個偵聽器時加載您的商店或更新)

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

編輯基於您的評論:

首先請確保您在您的閱讀器中正確配置了您的successPropertymessageProperty。然後實現,你希望它是接收器,更新,刪除,添加等異常:

(你的代理對象中配置監聽器)

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

+0

但我仍然不知道如何從json數組中獲取消息字段的值。我的意思是我需要像每個響應後應該調用的偵聽器之類的東西。 – danrah 2012-02-16 19:26:44

+0

非常感謝;) – danrah 2012-02-21 10:32:28