所以我有以下 jQuery 代码:
function updateOrderSummary(orderID) {
var returnString = orderID;
$.ajax({
url: "library/getOrderSummary.php",
type: "POST",
data: ({returnString:returnString}),
success: function(data){
console.log(data);
}
});
}
当我运行此脚本时,控制台显示以下 JSON:
{"orderDetails":{"orderItem":{"itemName":"351","itemQuantity":"2","itemID":"5-5331fbfd5e0e7","costPerPlay":"2"},"orderItem":{"itemName":"Demo","itemQuantity":"1","itemID":"5-54067191b71e8","costPerPlay":"1"},"orderItem":{"itemName":"314","itemQuantity":"1","itemID":"5-5331f5b41f9f4","costPerPlay":"1"}}}
格式化后,看起来像这样(为了您的方便):
{
"orderDetails": {
"orderItem": {
"itemName": "351",
"itemQuantity": "2",
"itemID": "5-5331fbfd5e0e7",
"costPerPlay": "2"
},
"orderItem": {
"itemName": "Demo",
"itemQuantity": "1",
"itemID": "5-54067191b71e8",
"costPerPlay": "1"
},
"orderItem": {
"itemName": "314",
"itemQuantity": "1",
"itemID": "5-5331f5b41f9f4",
"costPerPlay": "1"
}
}
}
当我通过 JSONLint (jsonlint.com) 运行 JSON 时,它会进行验证,但当我将 dataType: "json"添加到脚本中时,我似乎无法解析数据。 (即:)
function updateOrderSummary(orderID) {
var returnString = orderID;
$.ajax({
url: "library/getOrderSummary.php",
type: "POST",
data: ({returnString:returnString}),
dataType: "json",
success: function(data) {
console.log(data);
}
});
}
当我这样做时,我的控制台似乎只显示返回的 JSON 字符串的最后一个“节点”。我似乎无法像平常那样解析它。
最终,我想要做的就是获取返回字符串中存在的“orderItems”数量(在本例中为 3),并显示每个的“itemName”。所以像这样:
for (var a = 0; a < numNodes; a++) {
returnString += data.orderDetails.orderItem[a].itemName;
}
唉,我所做的一切似乎都无法让我深入研究 JSON。
有什么想法吗?
最佳答案
将您的 json 结构更改为以下格式。而不是具有相同键(orderItem)的对象,将其分组为数组。
{
"orderDetails": {
"orderItem": [{
"itemName": "351",
"itemQuantity": "2",
"itemID": "5-5331fbfd5e0e7",
"costPerPlay": "2"
},
{
"itemName": "Demo",
"itemQuantity": "1",
"itemID": "5-54067191b71e8",
"costPerPlay": "1"
},
{
"itemName": "314",
"itemQuantity": "1",
"itemID": "5-5331f5b41f9f4",
"costPerPlay": "1"
}
]
}
}
关于javascript - 奇怪的问题:jQuery AJAX 成功数据仅解析最后一个 JSON 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34958821/