【发布时间】: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)显示什么?