0

JSONデータ構造を解析しようとしていますが、データであるはずのデータが未定義を返しています。

これが私が使用しているjQueryです:

....
var messages = data.messages;

$.each(messages, function(i, val) {

    var user = messages[i];

    //console.log(user);
    console.log(user['msg']);

});

PHPのデータ構造は次のようになります。

...
$message_info = array();

$message_info[$row['username']]['prvt'] = 1;
$message_info[$row['username']]['msg'] = stripslashes($row['message']);
$message_info[$row['username']]['ts'] = $row['timestamp'];

...

$message_list[] = $message_info;

...

$res->messages = $message_list;
echo json_encode($res);

ユーザーをコンソールにダンプすると、出力は次のようになります:Object

{john: Object}
  john: Object
  msg: "test msg"
  prvt: 0
  ts: "2012-12-10 09:16:13"

これは、コンソールでのデータの表示です。

Object {success: true, lastid: "60", messages: Array[15]}
lastid: "60"
messages: Array[15]
  0: Object
    john: Object
      msg: "test msg"
      prvt: 0
      ts: "2012-12-10 09:16:13"
  1: Object
    john2: Object
      msg: "test msg2"
      prvt: 1
      ts: "2012-12-10 09:18:13"
 ...

msgの内容にアクセスして取得できない理由はありますか?

4

2 に答える 2

1

PHPを書き直して、次のmsg内部にネストしないようにし$row['username']ます。

$message_info = array();
$message_info['username'] = $row['username']; // find this in JS with user['username']
$message_info['prvt'] = 1;
$message_info['msg'] = stripslashes($row['message']);
$message_info['ts'] = $row['timestamp'];

この変更により、JavaScriptはそのまま機能するはずです。

于 2012-12-10T20:55:18.937 に答える
0

ユーザーオブジェクトには、キー「john」、「john2」などによって参照されるオブジェクトが含まれています。

user.john.msg or user.john2.msg

動作するはずです。

したがって、phpでより一般的なjson構造を構築するには、次のようにします。

...
$message_info['user']['name'] = $row['username'];
$message_info['user']['prvt'] = 1;
...
于 2012-12-10T20:53:06.307 に答える