Javascript:无法解析json响应

时间:2013-04-21 18:04:31

标签: javascript jquery json spring

Spring返回一个带有四个属性的json编码对象。其中一个是名为“array”的属性。我想要这个数组的内容。

这是整个json的回应:

ee
{"map":null,"array":[{"id":2,"description":"Cloud For Dev","businessSize":2,"businessType":9,"businessLocation":3},{"id":3,"description":"Cloud For Prod","businessSize":2,"businessType":9,"businessLocation":3}],"string":null,"bool":false}
0

我真的不确定“ee”或0是什么意思......无论如何,我试图像这样解析它:

$.ajax({
    type: "GET",
    url: "/ajax/rest/teamService/list",
    dataType: "json",
    success: function (response) {
        var teamArray = response.array;

        var $el = $("#teamSelect");
        $el.empty(); 

        $.each(teamArray[0], function(team) {
                alert(team.description);
                $el.append($("<option></option>").attr("value", team.id).text(team.description));
        });

        // Reattach the plugin
        $("#teamSelect").selectbox("detach");
        $("#teamSelect").selectbox("attach");
    },
    error: function (jqXHR, textStatus, errorThrown) {
        if (textStatus === 'error') {
            setTimeout(function() { window.location = '/do/login'; }, 7000);
        }
    }
});

我正在弹出警报框6次(应该是2),并且每次都显示“未定义”而不是实际描述。

选择框本身有四个空选项。

好像我正在迭代json编码对象的四个参数,而不是封闭数组的两个内容。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

试试这个 - teamArray[0]应该只有teamArray

$.each(teamArray, function(i,team) {
    alert(team.description);
    $el.append($("<option></option>").attr("value", team.id).text(team.description));
});

答案 1 :(得分:0)

现在,你正在循环teamArray[0]的键,因此有6个警报。循环teamArray。另外,$.each的回调takes indexInArray, valueOfElement。也许不是jQuery通过:

for(var i = 0; i < teamArray.length; i++) {
    var team = teamArray[i];
    ...
}