【问题标题】:Parse JSON object from Ajax response从 Ajax 响应中解析 JSON 对象
【发布时间】:2016-07-05 20:41:54
【问题描述】:

我正在使用 Ajax 从外部 API 检索响应。

这是我的代码:

<script type="text/javascript">
$("document").ready(function(){
  $(".nd-tracking").submit(function(){
    var data = {
      "action": "test"
    };
    data = $(this).serialize() + "&" + $.param(data);
    $.ajax({
      type: "POST",
      dataType: "json",
      url: "nd-request.php", 
      data: data,
      success: function(data) {
        $(".the-return").html(
          "<pre>" + data["json"] + "</pre>"
        );

        var obj = data["json"];
        for (var key in obj) {
          if (obj.hasOwnProperty(key)) {
            console.log(key + " -> " + obj[key]);
          }
        }
      }
    });
    return false;
  });
});
</script>
</head>
<body>
<form action="nd-request.php" method="post" class="nd-tracking">
    Consignment ID: <input type="text" value="" placeholder="Consignment ID" name="consignmentid"><br>
<input type="submit" name="submit" id="submit">
</form>

<div class="the-return">

</div>

我返回的数据是一个对象

[
{"code":{"0":"BKD"},"date":{"0":"2016-06-30"},"time":{"0":"08:51:33"},"trackEvent":{"0":"Magda Sliwa"}},
{"code":{"0":"ACC"},"date":{"0":"2016-06-30"},"time":{"0":"11:59:43"},"trackEvent":{"0":"Depot"},"carrierEvent":"accepted"},
{"code":{"0":"CRD"},"date":{"0":"2016-07-01"},"time":{"0":"09:56:00"},"carrierEvent":"Closed \/ carded"}
]

我使用this 来格式化我的Ajax 请求。另外,是否可以从 Ajax 请求中返回 JSON 并通过 PHP 进行解析?

我如何浏览这些并将它们全部写出来?

【问题讨论】:

  • 您将解析后的 json 放入 data,然后查找 data['json'],但您发布的 json 示例没有 json 键。你的 json 是一个对象数组,所以你会有 data[0] -> data[2],但不是 data[json]
  • 好的,所以当我执行console.log(data[0]["code"][0]); 之类的操作时,我会得到正确的输出 - 但如何循环遍历它们?
  • 忘记 json。这是一种传输格式。 jquery 已经为您解码了它,而您只有一个普通的旧 javascript 数据结构。您可以像处理任何其他 javascript 结构一样解析/循环它:它是一个数组,像对待一个数组一样对待它。
  • 这里是菜鸟,但console.log(data.length)为什么不返回项目数?
  • 应该,除非发生了奇怪的事情。 console.log(data) 显示什么?

标签: php json ajax


【解决方案1】:

我认为您已经获得了 JSON 编码的data,因此您可以使用以下代码直接遍历响应

...

success: function(data) {
    $.each(data, function(key,value) {
      alert(value.code[0] + '---' + value.date[0]); //and so on
    });
}

...

关于通过 PHP 解析

您似乎已经在 PHP 中解析数组并返回 JSON 作为响应。如果您在 PHP 中有原始 JSON 数据,那么您可以使用 json_decode($data) 将其转换为数组并遍历数组以对数据执行任何您想做的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-09
    • 2019-05-15
    • 1970-01-01
    • 1970-01-01
    • 2019-12-05
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    相关资源
    最近更新 更多