Javascript jQueryAjax成功数据只解析最后一个JSON节点的奇怪问题
因此,我有以下jQuery代码:Javascript jQueryAjax成功数据只解析最后一个JSON节点的奇怪问题,javascript,php,jquery,json,ajax,Javascript,Php,Jquery,Json,Ajax,因此,我有以下jQuery代码: function updateOrderSummary(orderID) { var returnString = orderID; $.ajax({ url: "library/getOrderSummary.php", type: "POST", data: ({returnString:returnString}), success: function(data){
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"}}}
格式化后,它看起来像这样(为了您的方便):
当我通过JSONLint(JSONLint.com)运行JSON时,它会进行验证,但当我将数据类型“JSON”添加到脚本中时,我似乎无法解析数据。(即:)
当我这样做时,我的控制台似乎只显示返回的JSON字符串的最后一个“节点”。我似乎无法像平常那样解析它
最终,我想要做的就是获取返回字符串中存在的“orderItems”的数量(在本例中为3),并显示每个字符串的“itemName”。比如说:
for (var a = 0; a < numNodes; a++) {
returnString += data.orderDetails.orderItem[a].itemName;
}
for(var a=0;a
唉,我所做的一切似乎都不能让我深入到JSON
有什么想法吗?问题是您的结构被设置为具有3个相同键的对象 因为对象键不能完全相同,所以整个属性都被重写了…只剩下最后一个 结构需要更改为对象数组 这样更合适
"orderDetails": [
{ "itemName": "351","itemQuantity": "2" ....},
{ "itemName": "567","itemQuantity": "34" ....}
]
将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"
}
]
}
}
"orderDetails": [
{ "itemName": "351","itemQuantity": "2" ....},
{ "itemName": "567","itemQuantity": "34" ....}
]
{
"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"
}
]
}
}