場合にもよりますが、行と列の数が一定でない限り、1 または 2 を使用します。
オプション 1 には、PHP で HTML を生成する方が Javascript よりも実用的に実行できるという利点があります。そのため、非常に迅速に何かを作成する必要がある場合、またはサーバー側に既にテンプレート システムが配置されている場合は、オプション 1 を試してください。大きな欠点このアプローチの重要な点は、サーバーが「正常な」HTML を送信することを信頼する必要があることです。AJAX 呼び出しに SSL を使用しない場合、単純な MITM 攻撃で悪用可能な XSS コードを簡単に挿入できます。また、サーバーが何らかの理由で壊れた HTML を送信した場合、それを検出することは困難であり、おそらく回復することは不可能です。
したがって、通常はオプション 2 を好みます。この時点では HTML を気にすることさえせず、代わりに DOM を直接操作するだけです。つまり、次のようになります。
- データ行をループします。行ごとに tr 要素を作成し、それをテーブルの本体に追加します
- 列をループします。行ごとに td 要素を作成し、それを tr に追加します。
.text()
セルにコンテンツを追加するために使用します。
コード例:
function fillTable(data) {
var tbody = $('<tbody/>');
data.each(function (row) {
var tr = $('<tr/>');
tbody.append(tr);
row.each(function (cell) {
var td = $('<td/>');
tr.append(td);
td.text(cell);
});
});
$('#myTable>tbody').replaceWith(tbody);
}
この方法では、DOM ノードを直接挿入しているため、HTML エンコーディング (および XSS) について心配する必要はありません。ブラウザーは HTML の解析をまったく行いません。