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);

上記のコードは、Data ではなく [object Object] になりました。

以下は私の期待される結果です

1 赤

2 オレンジ

3 青

4 イエロー

どんな提案でも大歓迎です

4

4 に答える 4

1

データ変数は配列です (1 つの要素のみを含みます)。オブジェクトは、実際にはその配列の最初の要素です。だから使用:

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

あなたのデータは、オブジェクトである1つの値の配列です。配列をループすると、そのオブジェクトを値としてテーブルに 1 行が取得されます。

代わりに、[] を削除してオブジェクトだけを取得し、代わりにそのキー/値を確認する必要があります。

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

これにより、必要な結果が得られます。

[ ] を何らかの理由 (外部データ ソースなど) で取り除くことができない場合は、データの代わりにループで data[0] を使用して、配列の最初の位置からオブジェクトを取得します。

于 2012-05-15T07:31:44.513 に答える
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 を JSON.parse(data) でキャストして配列に変換しました...

于 2013-09-20T10:12:46.823 に答える
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 に答える