php - 创建 HTML : PHP server-side vs. jQuery 客户端

标签 php jquery html ajax

<分区>

这是一道设计题。我有需要进入 HTML 表格的数据,稍后将由用户操作。基本上,用户将能够选择表格行中的项目。

我有两个选择 - 在这两种情况下我都使用 AJAX 来获取数据:

  1. 在服务器端使用 PHP 创建 HTML 代码,将其作为 HTML 发送到客户端。然后,用户使用 Javascript(本质上是 jQuery)操作表格。

  2. 使用 JSON 将原始数据发送到客户端,然后使用 jQuery 创建 HTML 并稍后由用户对其进行操作。

从设计/易于编码/美观的角度来看,推荐哪种方法? 感谢您的任何见解。

最佳答案

为什么要用 PHP 生成 HTML:

  • JavaScript 应该定义行为,而不是内容。
  • 在 JavaScript 中创建需要更多标记(多行字符串不像在 PHP 中那么容易)。
  • 如果您的 HTML 是在多个地方(PHP 和 JS)生成的,那么维护起来会更加困难。
  • 您可以使用 jQuery 的 DOM 操作函数来创建 HTML,但从长远来看,您是在自取其辱。
  • 在服务器上创建 HTML 比在浏览器上创建 HTML 更快(在计算意义上)。
  • 使用 PHP 循环更容易 - 生成表格标记很容易。
  • 如果您在页面加载时输出标记,如果用户禁用了 JavaScript,您将保留某种可战斗性。

为什么要用 jQuery 生成 HTML:

  • 您会节省一些带宽。
  • 绑定(bind)事件可能更简单。

所以,我赞成第一个选项,用 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 方法。

关于php - 创建 HTML : PHP server-side vs. jQuery 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2307535/

相关文章:

php - 使用 urlManager 在 url yii2 中隐藏一个 id

php - wamp 更新 php 到 7.2.2 版本不起作用

javascript - 为什么 javascript 函数在第一次运行时不更新 DOM

javascript - 第一次页面加载时运行函数

javascript - Jquery隐藏父div onclick

html - CSS - 对齐侧边栏旁边的内容区域而不添加额外的边距和javascript

javascript - html5 canvas文本中字体大小的有效粒度是多少?

php - 如何为 Ingram 微集成创建正确的订单测试?

html - 使文本固定到一个区域

php - MySQL 查询不根据 WHERE 值选择数据