jQuery AJAX成功数据仅解析最后一个JSON节点的奇怪问题
Weird issue where jQuery AJAX success data only parses last JSON node
所以我有以下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 会进行验证,但是当我将数据类型:"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"
}
]
}
}
问题是您的结构被设置为具有 3 个相同键的对象。
由于对象键不能相同,因此整个属性都会被覆盖...只留下最后一个
结构需要更改为对象数组
这样更合适
"orderDetails": [
{ "itemName": "351","itemQuantity": "2" ....},
{ "itemName": "567","itemQuantity": "34" ....}
]
相关文章:
- 如何使用jquery获取Json的节点
- 如何将数据添加到json的子节点
- 如何在核心php应用程序中使用节点js json Web令牌库
- JS在某个json节点之后循环
- 节点.js中的 JSON 数组
- 节点.js - 从 JSON 对象中删除空元素
- 节点 - 将 JSON 文件加载到代码中
- 如何在节点中进行 Json 对象排序.js
- 使用节点在 JSON 数组中搜索项目(最好不迭代)
- 如何在JavaScript中使用主节点文本对json对象进行排序
- 节点JSON https请求未定义
- 是否有任何功能可以合并两个JSON数据集并替换旧信息?(节点.JS)
- 在JavaScript节点环境中将Gzip内容编码响应转换为JSON数据
- Node.js-JSON.parse-将节点添加到结果中
- 将json数据动态加载到D3节点中
- 读取节点Js的json文件
- 节点 JSON 请求堆栈
- 在点击父节点(json)后加载子节点
- 删除节点JSON文件中的字段
- 浏览器JSON与节点JSON