我应该如何使用包装在Object中的jQuery JSON答案进行解析?

时间:2015-02-19 11:49:40

标签: javascript jquery json

我需要解析包含此结构的JSON答案

{

        "TariffItems": [
            {
                "TariffId": "89",
                "TariffCode": "Y",
                "TariffRusName": "Эконом"
            },
            {
                "TariffId": "67",
                "TariffCode": "C",
                "TariffRusName": "Бизнес"
            },
            {
                "TariffId": "87",
                "TariffCode": "J",
                "TariffRusName": "Премиум"
            }
        ]
    }

当我在Firebug中看到它时,它显示每个TariffItems都包含在对象中,这意味着以下jquery无法获取值。我应该怎么改变这个?

$.ajax({
            url: "/Home/GetTariffs",
            type: "post",
            cache: false,
            success: function (result) {
                $.each(result, function () {
                    $("#tariffs").append($("<button class='btn btn-default tariff'/>").val(this.TariffId).text(this.TarifNameRus));
                    $("div#tariffs.btn-group button.btn.btn-default").first().addClass("active");
                });
            },
            error: function (xhr, status, error) {
                var err = eval("(" + xhr.responseText + ")");
                alert(err.Message);
            }
        });

2 个答案:

答案 0 :(得分:1)

检查Fiddle。它应该是:

$.each(result.TariffItems, function () {
                    $("#tariffs").append($("<button class='btn btn-default tariff'/>").val(this.TariffId).text(this.TariffRusName));
                    $("div#tariffs.btn-group button.btn.btn-default").first().addClass("active");
                });

答案 1 :(得分:1)

将ajax代码更改为以下内容:

$.ajax({
        url: "/Home/GetTariffs",
        type: "post",
        cache: false,
        success: function (result) {
            $.each(result.TariffItems, function () { // <---------
                $("#tariffs").append($("<button class='btn btn-default tariff'/>").val(this.TariffId).text(this.TarifNameRus));
                $("div#tariffs.btn-group button.btn.btn-default").first().addClass("active");
            });
        },
        error: function (xhr, status, error) {
            var err = eval("(" + xhr.responseText + ")");
            alert(err.Message);
        }
    });

您正在收到一个对象。您要循环的项目是该对象的一部分。 因此,您必须使用对象项传递给jQuery的循环代码。

在这种情况下result.TariffItems