0

JSON と jQuery を介して mysql db に保存されたメッセージを表示する簡単なページを作成しようとしています。

私のJSONは

{"unread_msgs":[{"id":"6","title":"33333","user1":"19","timestamp":"1383747146","client_id":"Generic"},{"id":"5","title":"42142","user1":"19","timestamp":"1383740864","client_id":"Generic"}],"read_msgs":[{"id":"4","title":"test to addnrow","user1":"19","timestamp":"1383676647","client_id":"Generic"},{"id":"2","title":"kll","user1":"19","timestamp":"1383675548","client_id":"Generic"},{"id":"1","title":"jkjljklj","user1":"19","timestamp":"1382539982","client_id":"Generic"}],"urm_t":2,"rm_t":3}

私のJS

<script type="text/javascript">
function GetClientMsgs () {
    $.post("assets/server/client_msgs.php",{ client_id:local_client_id } ,function(data)
    {           
        var MsgData = $.parseJSON(data);
        console.log("Msg json data parsed");

        $.each(MsgData, function(key, value)
        {
          console.log(value);
            $('#unread_row').append('<td><a href="#read_pm" onClick="ReadMsg('+value.unread_msgs.id+'); return false;">'+value.unread_msgs.title+'</a></td><td><a href="#profile">'+value.unread_msgs.studioname+'</a></td><td>'+value.unread_msgs.timestamp+'</td><td><a href="#delete_msg" onClick="DeleteMsg('value.unread_msgs.id+'); return false;">X</a></td>');

            $('#read_row').append('<td><a href="#read_pm" onClick="ReadMsg('+value.read_msgs.id+'); return false;">'+value.read_msgs.title+'</a></td><td><a href="#profile">'+value.read_msgs.studioname+'</a></td><td>'+value.read_msgs.timestamp+'</td><td><a href="#delete_msg" onClick="DeleteMsg('+value.read_msgs.id+'); return false;">X</a></td>');
        });
    });
}                   
</script>        

PHP

$msgs = array('unread_msgs' => $dn1s, 'read_msgs' => $dn2s, 'urm_t' => $unread_msgs, 'rm_t' => $read_msgs);

$json = json_encode($msgs);

unread_msgs.title や .id などの返された値を投稿しようとしていますが、どのオブジェクトにもアクセスできません。ここで検索しましたが、私の構造に固有のものは見つかりませんでした。どうもありがとう。

4

2 に答える 2

1

次のように、未読の結果と読み取り結果を別々にループします。

    $.each(MsgData.unread_msgs, function(key, value)
    {
      // code append to unread row
      console.log(value.id, value.title, "etc");
    });

    $.each(MsgData.read_msgs, function(key, value)
    {
      // append to append to read row
      console.log(value.id, value.title, "etc");
    });

json をhttp://jsonformatter.curiousconcept.com/などのフォーマッターに貼り付けると、その構造を確認するのに役立ちます。

于 2013-11-06T16:03:07.693 に答える
0

この行で:

$('#unread_row').append('<td><a href="#read_pm" onClick="ReadMsg('+value.unread_msgs.id+'); return false;">'+value.unread_msgs.title+'</a></td><td><a href="#profile">'+value.unread_msgs.studioname+'</a></td><td>'+value.unread_msgs.timestamp+'</td><td><a href="#delete_msg" onClick="DeleteMsg('value.unread_msgs.id+'); return false;">X</a></td>');

value実際には配列ですが、オブジェクトとして変数にアクセスしています。

$.eachループ内の最初の未読メッセージ ID にアクセスするには、次のようにしますvalue[0].id

未読メッセージと既読メッセージのリストを取得しようとしている場合は、それらをループしてみてください。

$.each(MsgData.unread_msgs, function(index, message) {
    $('#unread_row').append('<td>' + message.id + '</td><td>.......');
});

$.each(MsgData.read_msgs, function(index, message) {
    $('#read_row').append('<td>' + message.id + '</td><td>.......');
});

または、ネストされたループを使用します。

$.each(MsgData, function(key, value) {
    $.each(value, function(index, message) {
        $('#' + key).append('<td>' + message.id + '</td><td>....);
    });
]);
于 2013-11-06T16:04:43.927 に答える