0

我有一个非常简单的数据,我想在表格中显示。

数据

[{"1":"红色","2":"橙色","3":"蓝色","4":"黄色"}]

代码:

 var a = [];
                    $.each(data, function (key, val) {
                        a.push('<tr id="tr_' +key+ '">');
                        a.push('<td>' + key+ '</td>');
                        a.push('<td>' + val+ '</td>');
                        a.push('</tr>');
                    });
                    var s = a.join('');
                    $('#color-list').html(s);

上面的代码导致 [object Object] 而不是 Data。

以下是我的预期结果

1 红色

2 橙色

3 蓝色

4 黄色

任何建议将不胜感激

4

4 回答 4

1

您的数据变量是一个数组(仅包含一个元素)。该对象实际上是该数组的第一个元素。所以使用:

$.each(data[0], function (key, val) {
    ...
于 2012-05-15T07:29:35.147 回答
1

您的数据是一个包含 1 个值的数组,它是一个对象。如果您遍历数组,您将在表中以该对象作为值获得一行。

相反,您应该删除 [] 并仅拥有该对象,然后通过该对象的键/值来代替:

var data = {"1":"Red","2":"Orange","3":"Blue","4":"Yellow"}

这会给出你想要的结果。

如果由于某种原因(例如外部数据源)无法摆脱 [ ],那么只需在循环中使用 data[0] 而不是 data 从数组中的第一个位置获取对象。

于 2012-05-15T07:31:44.513 回答
0

你可以这样循环:

 // If the returned data is an object do nothing, else try to parse
var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;
for (var i = 0; i < array.length; i++) {
    str += '<tr>';
    for (var index in array[i]) {
        str += '<td>' + array[i] + '</td><td>' + array[i][index] + '</td>';
    }
    str += '</tr>';
}
于 2012-05-15T07:42:52.550 回答
0

实际上,当 json 为字符串形式时,有时它不起作用。请尝试以下方法:

[{"Srno":38,"ReqId":36,"ItemId":155,"Qty":90.00,"TransferItemId":null,"TransferQty":null,"ExpReqDated":"\/Date(1363285800000)\/","IsCancelled":false,"Remarks":null},d":171,"Qty":40.00,"TransferItemId":null,"TransferQty":null,"ExpReqDated":"\/Date(1363717800000)\/","IsCancelled":false,"Remarks":null},{"Srno":113,"ReqId":53,"ItemId":172,"Qty":40.00,"TransferItemId":null,"TransferQty":null,"ExpReqDated":"\/Date(1363717800000)\/","IsCancelled":false,"Remarks":null}]"

然后我们通过 JSON.parse(data) 转换 json 以将其转换为数组...

于 2013-09-20T10:12:46.823 回答