AJAX / PHP - 访问JSON对象属性

时间:2013-06-26 16:46:23

标签: php ajax arrays json

我正在尝试访问JSON对象的属性。我的ajax电话是:

$.ajax({
  url: 'login.php',
  type: 'post',
  dataType: 'json',
  data: $('#frmLgn').serialize(),
  success: function(data) {
    console.log(data[0].message);
    console.log(data[1].message);
    console.log(data[2].message);
}

PHP是:

for ($i = 0; $i < $queryMsgCntResults; $i++) {

  $queryGetNew = "SELECT message, msgID FROM $username WHERE isNew = 1;";
  try
  {
    $stmt = $db->prepare($queryGetNew);
    $stmt->execute();
    $message = $stmt->fetch(PDO::FETCH_ASSOC);
    $messageArray[] = $message;         
  } 
  catch(PDOException $ex)
  {
    die("Failed to run query: " . $ex->getMessage()); 
  }     
}
echo json_encode($messageArray);
}

我希望输出:

    console.log(data[0].message); //contents of message1
    console.log(data[1].message); //contents of message2
    console.log(data[2].message); //contents of message3

但是得到:

    console.log(data[0].message); //contents of message1
    console.log(data[1].message); //contents of message1
    console.log(data[2].message); //contents of message1

我错过了什么/弄乱了什么?

请关闭此问题。我将重新组织,重新测试,并且很可能为了清晰起见而重新发布。我感谢您的所有帮助,并为浪费任何人的时间而道歉。谢谢。

1 个答案:

答案 0 :(得分:1)

$message = $stmt->fetch(PDO::FETCH_ASSOC);

此行一次获取一行。你需要一遍又一遍地调用它来获取每一行。

while($message = $stmt->fetch(PDO::FETCH_ASSOC)){
    $messageArray[] = $message;
}