首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数据转换为HTML表的位置: PHP / Javascript /

将数据转换为HTML表的位置: PHP / Javascript /
EN

Stack Overflow用户
提问于 2012-06-15 11:31:53
回答 3查看 881关注 0票数 0

我需要一个关于如何写我的网站的建议。

在我的DB中,我有一些数据需要动态加载到我的网站上的不同帧中。问题是:我在哪里将原始数据转换为HTML代码?

我目前看到以下选项:

HTML-code

  • Write函数中的
  • 将其转换为HTML,并通过Ajax将其加载到页面上,
    • 通过Ajax获取原始数据,并在
    • 中将其转换为HTML,然后通过Ajax

    将数据插入其中。

所有这三个选项都有它们的缺点--例如,我需要能够使用jQuery选择表行,而当使用Ajax加载到页面时,我不知道如何选择表HTML。手动编写HTML表可以解决这个问题,但是表需要有可变的行数。

有什么我还没想过的选择吗?还有其他建议吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-15 11:43:33

这取决于情况,但除非行数和列数是常数,否则我将使用1或2。

选项1的优点是,在PHP中生成HTML比在Javascript中更实用,所以如果您需要快速完成一些事情,或者您已经在服务器端安装了一个模板系统,请尝试选项1。这种方法的一个巨大的缺点是,您必须信任服务器发送“健全”的HTML;如果您不使用SSL进行AJAX调用,那么简单的MITM攻击可以很容易地注入可利用的XSS代码,如果服务器由于某种原因发送损坏的HTML,则很难检测到,而且很可能无法从中恢复。

因此,通常,我更喜欢选项2。我甚至不会在这一点上使用HTML,而是直接操作DOM,即:

对数据行进行

  • 循环;对于每一行,构造一个tr元素并将其附加到表的主体
    • 循环中;对于每一行,构造一个td元素并将其附加到tr;使用.text()将内容添加到

示例代码:

代码语言:javascript
复制
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解析。

票数 1
EN

Stack Overflow用户

发布于 2012-06-15 11:41:15

我将使用一些1和3方法的组合,使用某种文件缓存或memcache,而不是数据库(必须慢一点)。您必须为需要的块生成一次具有所需参数的html,并将其缓存到文件中,因此它将类似于(伪代码):

代码语言:javascript
复制
$aParams = ... lets tell that this is your params here;
$sBlockKey = 'my_block_'.md5($aParams);
if (cache::exists($sBlockKey)){
  $sMyBlock = cache::get($sBlockKey);
} else {
  $sMyBlock = generateMyBlockHtml($aParams);
  cache::add($sBlockKey, $sMyBlock);
}

return $sMyBlock;

通过这种方式,您可以通过ajax加载它,如果需要的话。

票数 1
EN

Stack Overflow用户

发布于 2012-06-15 11:54:52

我正在使用这两个jquery - http://datatables.net/http://www.trirand.com/blog/ --这可能是一种过载,但您将获得相当灵活的方法,如何在页面上显示动态加载的数据,它们都有处理行选择、格式化等的好方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11049892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档