2
我正在加載來自web服務的值,但我得到以下錯誤消息。 ChatStore.data.items [i]未定義。對於ExtJS的如何在extjs中加載json
映射代碼
ChatStore = new Ext.data.JsonStore({
storeId: 'ChatStore1',
fields: [
{name: "pic_url", mapping: "sender_pic_url"},
{name: "first_name", mapping: "first_name"},
{name: "last_name", mapping: "last_name"},
{name: "message_text", mapping: "message_text"},
{name: "time", mapping: "time"}
]
});
從web服務加載數據的代碼
Ext.Ajax.request({
url: 'webservice call',
params: Ext.encode('{"sender_user_id":"' + suid + '","receiver_user_id":"' + ruid + '"}'),
headers: { 'Content-type': 'application/json;charset=utf-8' },
success: function (result, request) {
retData = (result.responseText);
alert(retData);
retData = eval("(" + retData + ")");
if (retData.status == 'success') {
//ChatStore.loadData(retData.result.messages);
//ChatStore.loadData(retData.result);
for (var i = 0; i < retData.result.messages.length; i++) {
if (retData.result.messages[i].message_from == "YES") {
ChatStore.data.items[i].data.pic_url = retData.result.sender_pic_url;
ChatStore.data.items[i].data.first_name = retData.result.sender_name;
}
else {
ChatStore.data.items[i].data.pic_url = retData.result.receiver_pic_url;
ChatStore.data.items[i].data.first_name = retData.result.reciever_name;
}
ChatStore.data.items[i].data.message_text = retData.result.messages[i].message_text;
ChatStore.data.items[i].data.time = retData.result.messages[i].time;
}
// ChatPanel.render('divchat');
messagePanel.hide();
ChatPanel.show();
}
else { alert('error loading first radius'); }
},
failure: function (result, request) {
alert("Error: " + result.statusText);
}
});
return false;
}
我的web服務的結果是:-----
{
"status": "success",
"message": "Messages are listing below",
"result": {
"sender_name": "Paul",
"reciever_name": "Clay",
"sender_pic_url": "Images/f1.jpg",
"receiver_pic_url": "Images/f2.jpg",
"messages": [
{
"message_from": "YES",
"message_text": "hi, how r u?",
"time": "12:00am"
},
{
"message_from": "NO",
"message_text": "hi, where are you?",
"time": "1:00am"
},
{
"message_from": "NO",
"message_text": "Dear, you are invited for the meeting",
"time": "2:00am"
},
{
"message_from": "YES",
"message_text": "hi, how r u?",
"time": "12:00am"
},
{
"message_from": "NO",
"message_text": "hi, where are you?",
"time": "1:00am"
},
{
"message_from": "NO",
"message_text": "Dear, you are invited for the meeting",
"time": "2:00am"
},
{
"message_from": "NO",
"message_text": "Ya ill be there",
"time": "2:00am"
},
{
"message_from": "NO",
"message_text": "at what time party starts",
"time": "2:00am"
},
{
"message_from": "YES",
"message_text": "6Oclock in the evening",
"time": "2:00am"
},
{
"message_from": "NO",
"message_text": "Who will the chief guest",
"time": "2:00am"
},
{
"message_from": "YES",
"message_text": "our city mayor",
"time": "2:00am"
}
]
}
}
我不知道在哪裏事情出錯了。
感謝..我upadate我的代碼在這裏... 我與調試器ChatStore.data.items測試[I] .data.pic_url此得到正確的值,但我不知道如何在商店加載... – rash111 2012-03-11 13:28:11
唐不需要做這一切。檢查商店的代理屬性。這是您指定您具有Json代理和URL到您的服務器的位置。然後,您只需調用store.load(),它將自行完成Ajax請求,並自動在商店中獲取數據。 – sha 2012-03-11 13:59:54
我知道store.load方法,但我一次獲得pic_url和名稱,我必須映射sender_pic和接收器pic並在11時間在dataview中使用。即基於web服務 – rash111 2012-03-11 14:01:58