簡體   English   中英

為什么我的JSON對象未定義?

[英]Why is my JSON object undefined?

我正在嘗試解析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);

如果我將用戶轉儲到控制台,則輸出如下所示:

{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"
 ...

知道為什么我無法訪問和檢索味精的內容嗎?

重寫您的PHP,以避免在$row['username']嵌套msg

$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應該可以按原樣工作。

您的用戶對象包含一個由鍵“ john”,“ john2”等引用的對象。

user.john.msg or user.john2.msg

應該管用。

因此,要在php中建立更通用的json結構,我將執行以下操作:

...
$message_info['user']['name'] = $row['username'];
$message_info['user']['prvt'] = 1;
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM