简单的JSON到HTML表

时间:2012-05-15 07:25:25

标签: jquery json

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

DATA

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

CODE:

 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 Orange

3 Blue

4黄色

任何建议都将不胜感激

4 个答案:

答案 0 :(得分:1)

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

$.each(data[0], function (key, val) {
    ...

答案 1 :(得分:1)

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

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

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

然后给出你想要的结果。

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

答案 2 :(得分: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>';
}

答案 3 :(得分: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(数据)转换json以将其转换为数组...