为什么要在 PHP 中生成 HTML:
- JavaScript应该定义行为,而不是内容。
- 在JavaScript中创建需要更多的标记(多行字符串不像PHP中那么容易)。
- 如果你的HTML是在几个地方生成的(PHP和JS),那就更难维护了。
- 你可以使用jQuery的DOM操作函数来创建你的HTML,但从长远来看,你是在给自己开枪。
- 在服务器上创建 HTML 比在浏览器上创建 HTML 更快(在计算意义上)。
- PHP的循环更容易 - 很容易生成表标记。
- 如果您在页面加载时输出标记,则如果用户禁用了 JavaScript,则可以保留某种可攻击性。
为什么要在jQuery中生成HTML:
所以,我赞成第一个选项,在PHP中生成HTML。
直观比较两种方法,创建一个简单的表。
选项 1,使用 PHP:
// PHP
$html = '<table>';
foreach($data as $row) {
$html .= '<tr>';
$html .= '<td><a href="#" class="button">Click!</a></td>';
$html .= '<td>'.$row['id'].'</td>';
$html .= '<td>'.$row['name'].'</td>';
$html .= '</tr>';
}
$html .= '</table>';
echo $html;
?>
// jQuery
$('#container').load('handler.php', function() {
$('#container a.button').click(function() {
// Do something
});
});
选项 2,使用 jQuery:
// PHP
echo json_encode($data);
// jQuery
$.ajax({
url: 'handler.php',
dataType: 'json',
success: function(data) {
var table = $('<table />');
var len = data.length;
for(var i = 0; i < len; i++) {
var row = $('<tr />');
var a = $('<a />').attr('href', '#').addClass('button');
row.append($('<td />').append(a));
row.append($('<td />').html(data[i].id);
row.append($('<td />').html(data[i].name);
table.append(row);
}
table.find('.button').click(function() {
// Do something
});
$('#container').html(table);
}
});
从设计/易于编码/美观的角度来看,我肯定会说使用PHP方法。