如何从JSON响应中获取值

时间:2015-02-10 19:44:24

标签: jquery json response

我从服务器得到以下响应:

{ “翠菊”: “3”, “水仙”: “4”, “玫瑰”: “3”, “TOTALITEMS”:10 “totalPrice”: “31.90”} RESPONSE

并且,我想把它放在看起来像这样的表中:

enter image description here

问题是我不知道如何获取值(对于“数量”列)。这是我的代码:

function processServerResponse(data) {
if (data.products.length > 0) {
    $("#orderForm").hide();
    $("#summaryForm").show();
    var html = '';
    $.each(data.products, function(key, value) {
        html += "<tr><td>"+value.name+"</td><td>"+?????+"</td></tr>"
    });
    $(html).appendTo("tbody");
    $("#totalItems").text(data.totalItems);
    $("#totalPrice").text(data.totalPrice);
}

}

在此之前,这就是我的$ .ajax的样子(这是更大的代码,你不必阅读):

$("#orderForm button").click(function (e) {
    e.preventDefault();
    var formData = $("#orderForm").serialize();
    $("#popup").show();
    $("body *").not("#popup").css("opacity", 0.5);
    $("input").prop("disabled", true);
    $.ajax({
        url: "http://localhost/",
        type: "post",
        data: formData,
        dataType: "json",
        dataFilter: function(data, dataType) {
            primljeniOdgovor = $.parseJSON(data);
            var cleanData = {
                totalItems: primljeniOdgovor.totalItems,
                totalPrice: primljeniOdgovor.totalPrice
            };
            delete primljeniOdgovor.totalItems;
            delete primljeniOdgovor.totalPrice;
            cleanData.products = [];
            for (prop in primljeniOdgovor) {
                cleanData.products.push({
                    name: prop,
                    quantity: data[prop]
                })
            }
            return cleanData;
        },
        converters: {
            "text json": function(data) {
                return data;
            }
        },
        success: function(data) {
            processServerResponse(data);
        },
        complete: function() {
            setTimeout(function() {
                $("#popup").hide();
                $("body *").not("#popup").css("opacity", 1);
                $("input").prop("disabled", false);
            }, 1500);
        }
    });
})

我通过value.name从响应中获取名称,但我不知道如何获得该值(数量)?

1 个答案:

答案 0 :(得分:1)

您的代码中存在错误。

一定是

                cleanData.products.push({
                    name: prop,
                    quantity: primljeniOdgovor[prop]    //not data[prop]
                })

而不是quantity: data[prop]data只是一个未解析的String对象。 primljeniOdgovor是包含属性值的已解析对象。

请参阅http://jsfiddle.net/t7n2tafk/