我有一个非常简单的数据,我希望在表格中显示。
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黄色
任何建议都将不胜感激
答案 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以将其转换为数组...