通过循环的JSON响应

时间:2015-12-04 04:57:50

标签: javascript arrays json ajax loops

我正在使用ajax从PHP脚本中获取字符串。该字符串采用由多个对象组成的JSON数组格式。

我可以成功访问对象,但是在使用循环时我没有运气。我需要以相反的顺序访问对象。

AJAX STRING RESPONSE:

{
  "messages": [{
      "username": "John",
      "message": "Hello!",
      "age": 32,
    },
    {
      "username": "Bob",
      "message": "Awesome day",
      "age": 26,
    },
    {
      "username": "Sarah",
      "message": "How are you?",
      "age": 19,
    }
  ]
}

JAVASCRIPT:

var messageList = JSON.parse(ajax.responseText);

var message_count = messageList.messages.length;

while (message_count >= 0) {
    alert(messageList.messages[message_count].username);
    message_count -= 1;
}

我基本上需要提醒按顺序:Sarah Bob John 我做类似的事情时可以访问数组:     警报(messageList.messages [0] .username);

当我使用message_count变量时,似乎只会失败。我已经搜索了几个小时的类似问题,但没有成功。 提前谢谢!

2 个答案:

答案 0 :(得分:4)

您的数组的长度为3,但数组的索引编号为零,因此您需要从总长度中减去1以使循环起作用(messages[3]不存在)。

var message_count = messageList.messages.length - 1;

循环将从2变为0并为您提供正确的输出。

DEMO

答案 1 :(得分:0)

试试这个:

$.getJSON( url, function( data ) {
    var messages = data.messages || {};
    $.each(messages,function(key,info){
        console.log(info.username);
        console.log(info.message);
        console.log(info.age);
    });
});