这取决于,但除非行数和列数是恒定的,否则我会选择 1 或 2。
选项 1 的优点是,在 PHP 中生成 HTML 比在 Javascript 中更实用,所以如果你需要做一些非常快速的事情,或者你已经在服务器端有一个模板系统,请尝试选项 1。一个巨大的缺点这种方法的一个特点是您必须信任服务器才能发送“正常”的 HTML;如果您不使用 SSL 进行 AJAX 调用,那么简单的 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);
}
这样,您不必担心 HTML 编码(以及 XSS),因为您直接注入 DOM 节点 - 浏览器根本不会进行任何 HTML 解析。