javascript - 奇怪的问题:jQuery AJAX 成功数据仅解析最后一个 JSON 节点

标签 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){
            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/

相关文章:

php - PDO “Uncaught exception ' PDOException' .. 当其他无缓冲查询处于事件状态时无法执行查询。考虑使用 PDOStatement::fetchAll()。”

php - 为什么 Doctrine 总是向有条件的左连接返回 null?

javascript - 单击子 div 外部关闭灯箱

javascript - 如何innerHTML一个没有id的HTML标签?

javascript onload 在 while

javascript - Nashorn Javascript 和 ES6

php - 当我将MySQL数据库转换为JSON时,为什么第一项是空数组?

javascript - 从列表到可折叠菜单树

javascript - 已访问的菜单选项未突出显示

javascript - 如何在 JavaScript 中制作缩写/首字母缩略词?