从AJAX返回访问JSON数组,为什么我没有获得任何返回值?

时间:2013-11-19 21:25:18

标签: jquery ajax json

我有一个像这样的JSON数组:

{"items":[{"itemId":"1","ndc":"ndc 1","upc":"upc 1","description":"Test Item 1","abc6":"11"}],"searchString":"1","lineNumber":10}

我正在使用这样的jQuery AJAX:

function ajaxGetData() {
        var productid = $(this).val();
        var line = parseInt($(this).parents("td").siblings(".row-target").text());
        $.ajax({
            type: "post",
            url: "searchItem.do?originalInput=" + productid + "&lineNumber=" + line,
            })
            .done(function(data) {
                var done = data.items["description"];
                alert(done);
            });
    }

我的警报未定义。如何访问此对象中的数据?

3 个答案:

答案 0 :(得分:4)

items是一个数组。您必须访问第一个数组元素。

data.items[0].description

答案 1 :(得分:0)

你需要:

data.items[0]['description']

你有一个包含一个对象数组的对象,但只是引用一个对象。

答案 2 :(得分:0)

这就是我通常做的事情:

var descriptions=[];
$.each(data.items, function(idx,item){
    descriptions.push(item.description);
});

alert(descriptions);

如果我需要这个数组中的描述和一个itemId,它将是:

var descriptions=[];
$.each(data.items, function(idx,item){
    descriptions.push({
        itemId     : item.itemId,
        description: item.description
    );
});

alert(descriptions);

关键是items是一个没有名为description的属性的集合。您必须枚举每个项目才能访问它。

还有一件事,如果您使用的是item["description"]而不是item.description,则会在代码编辑器中丢失智能感知。