1

我有一组应该看起来像这样的对象......

[{"Name":"blah","Description":"blah"},{"Name":"blah2","Description":"blah2"}]

使用 Javascript/jQuery,如何获取键/值对?我尝试了许多不同的方法,但无济于事。当我尝试获取长度时,它总是返回字符数并遍历每个字符而不是对象的实际计数?当我运行它时,它会为每个字符拼出的 [object Object]、[object Object] 返回一个警报......

function DisplayItems(data) {
        $.each(data, function () {
            $.each(this, function (key, value) {
                alert(value);
            });
        });
}

现在我看这个,这不是我期待的对象数组吗?我怎样才能真正返回字符串,这样我才能真正看到其中的真正内容并可能从那里开始?

**编辑:

这是我获取订单的函数(去掉废话并向您显示警报)...我调用 jQuery.Ajax 并将返回的数据传递给 displayOrders(data)。这些订单有一个 Items 的复合属性,其中包含一个 Item 列表。

function displayOrders(data) {
        $('#gdvOrders tbody').empty();
        for (var key in data.d) {
            alert(data.d[key].Items);
}

这是我传递给 displayItems 的,你在警报函数中看到的。我在一个表中显示订单(隐藏包括项目在内的一些列),并且当他们在订单表中选择一行时,希望在另一个表中显示每个订单的项目。在上面显示的函数中,我可以写...

data.d[key].OrderId

它会正常显示。如何显示每个项目的属性?

jQuery.Ajax 函数设置为 content-type: 'application/json; charset=utf-8' 这是我从...那里得到订单的地方

[WebMethod]
    public static List<Order> GetOrdersByDept(Department department, Filter filter, DateTime? dateFrom = null, DateTime? dateTo = null)
    {
        return OrderLists.GetOrdersByDepartment((Department)department, (Filter)filter, dateFrom, dateTo);
    }
4

4 回答 4

1

See this is working:

data=[{"Name":"blah","Description":"blah"},{"Name":"blah2","Description":"blah2"}]
data.forEach(function(i,j){

console.log("Name :"+i.Name+" Description :"+i.Description);


})
于 2015-06-16T06:22:51.250 回答
0

使用 JavaScript,只需使用for .. in循环

for(var i = 0; i < data.length; i++) {
    var obj = data[i];
    for (var key in obj) {
        if (obj.hasOwnProperty(key)) {
            alert(key + " = " + obj[key]);
        }
    }
}

在这里小提琴 - http://jsfiddle.net/XWsvz/

于 2012-05-09T03:45:41.077 回答
0

现在我看这个,这不是我期待的对象数组吗?我怎样才能真正返回字符串,这样我才能真正看到其中的真正内容并可能从那里开始?

如果对象作为字符串返回,您可以简单地提醒它。但是,如果您的函数被传递一个未知对象,您始终可以将其转换回 JSON 字符串并警告它,以便您可以可视化结构:

function displayItems(data) {
    alert(JSON.stringify(data));
    ...

}

作为旁注,我将函数中的第一个字母更改为小写字母,以匹配 JavaScript 中函数的命名约定。

于 2012-05-09T03:46:37.903 回答
0

看起来你很接近:

function DisplayItems(data) {
    console.log('data is: ', JSON.stringify(data));
    $.each(data, function (key, arrayElement, index) {
        console.log('arrayElement ' + index + ' is: ', JSON.stringify(arrayElement));
        $.each(arrayElement, function (key, value) {
            console.log('key: ' + key + ' val: ' + value);
        });
    });
}

http://jsfiddle.net/ux9D8/

使用您的数据,这给了我以下输出:

data is:  [{"Name":"blah","Description":"blah"},{"Name":"blah2","Description":"blah2"}]
arrayElement undefined is:  {"Name":"blah","Description":"blah"}
key: Name val: blah
key: Description val: blah
arrayElement undefined is:  {"Name":"blah2","Description":"blah2"}
key: Name val: blah2
key: Description val: blah2
于 2012-05-09T03:48:21.337 回答