【问题标题】:JSON response through loop通过循环的 JSON 响应
【发布时间】:2015-12-04 04:57:49
【问题描述】:

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

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

AJAX 字符串响应:

{
  "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 当我执行以下操作时,我可以访问数组: alert(messageList.messages[0].username);

似乎只有在我使用 message_count 变量时才会失败。我已经搜索了很多小时来寻找类似的问题,但没有成功。 提前谢谢!

【问题讨论】:

    标签: javascript arrays json ajax loops


    【解决方案1】:

    您的数组长度为 3,但数组的索引从零开始,因此您需要从总长度中减去 1 才能使循环正常工作(messages[3] 不存在)。

    var message_count = messageList.messages.length - 1;
    

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

    DEMO

    【讨论】:

      【解决方案2】:

      试试这个:

      $.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);
          });
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-02-26
        • 1970-01-01
        • 2016-07-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-31
        相关资源
        最近更新 更多