2012-03-11 15 views
2

Webサービスからの値をロードしていますが、次のエラーメッセージが表示されます。 ChatStore.data.items [i]は未定義です。extsonのjsonをロードする方法

ExtJSのためのマッピングコードはWebサービスからデータをロードするための

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"} 

       ]   

    }); 

コード

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" 
      } 
     ] 
    } 
} 

物事は間違っています。

答えて

0

store.items配列にアイテムを割り当てることはできません。まず第一にそれは未定義です。第二に、全体的に正しいアプローチではありません。あなたが追加するstore.add()関数を使用する必要がある店でJSONプロキシオブジェクトを指定した後、ストアが自動的にロードされ、すべてのアイテムが特別なコードなしで取り込まれますいずれかの必要、または

新しい商品を店舗に届けます。

コードから、store.load()メソッドを使用しているようです。データをどのくらい正確に読み込み、サーバとの通信がどのようになっているか、より多くのコードを投稿できますか?

+0

ありがとうございます。私はここに私のコードをupadate ... 私はデバッガChatStore.data.items [i] .data.pic_urlでテストされていますが、これは正しい値を取得しますが、私はストアで読み込む方法を知らない... – rash111

+0

ドンこのすべてを行う必要はありません。ストアのプロキシプロパティを確認します。ここでは、JsonプロキシとURLをサーバーに指定します。次に、store.load()を呼び出すだけでAjaxリクエストが自動的に行われ、自動的にストア内のデータが取得されます。 – sha

+0

私はstore.loadメソッドを知っていますが、私は一度にpic_urlと名前を取得しています。そして、私はsender_picとreceiver picでマップし、11時にはdataviewで使用する必要があります。私はwebserviceに基づいて – rash111

関連する問題