创建HTML:PHP服务器

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

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

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

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

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


    为什么要在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的方法。


    为什么返回生成的HTML而不是JSON是一种不好的做法? 或者是? 在这个线程中没有提到一些好点。


    如果生成的HTML与页面HTML相同,则可以利用现有的模板代码生成相同的HTML,同时代码重复性更低。

    否则,JSON通常更常见,因为它往往更紧凑,它允许您创建节点并随时为其分配非HTML属性,如事件处理程序。

    但是,如果通过创建HTML字符串来创建新节点,则必须使用HTML编码来确保任何<&或引号都能正确转义。 没有像PHP中的htmlspecialchars这样的JavaScript内置函数; 写一篇文章非常简单,但似乎没有人会打扰。 结果是jQuery应用程序充满了客户端跨站点脚本安全漏洞,就像我们开始在修复服务器端XSS方面取得一些进展一样。

    链接地址: http://www.djcxy.com/p/47883.html

    上一篇: Creating HTML: PHP server

    下一篇: Jquery AJAX return raw data or ready