【问题标题】:loading html content as a json将 html 内容加载为 json
【发布时间】:2011-08-04 12:02:04
【问题描述】:

我正在使用 php 和 jquery。我使用 ajax 调用来加载从其他 php 页面获得的一些巨大的 html 内容。随着时间的推移它变得越来越慢,我明白问题在于,我必须将结果作为 JSON 返回。 HTML 内容是一个包含一些 html 内容和其中的一些事件的表格

但是我应该怎么做。需要什么 spl 吗?

【问题讨论】:

  • 首先显示代码以及你想要的输出
  • 您应该只通过 JSON 传输数据,即包含在表中的数据,在客户端使用 JavaScript 创建表/行并将事件绑定从 HTML sn-p 移动到“主页”,可能使用事件委托。

标签: jquery html ajax json


【解决方案1】:

您应该首先尝试了解 json 是什么。它只是层次信息的一种格式。与 HTML 不同,Json 本身对这些信息没有任何意义。例如,没有“事件”之类的东西,除非您手动处理它们并运行事件处理程序。

但是,如果您可以让您的信息为 json 格式并且仍然有用,那么它很可能会占用更少的空间/带宽,加载甚至解析速度都比 html 更快。

读取和解析 json 非常简单,因为它基于 JavaScript。任何 JSON 代码也是有效的 JavaScript,因此您可以使用 eval 解析它。但是,只有在您完全相信 json 的来源不是恶意的情况下才应该这样做,因为在 eval() 中运行从请求中获得的任何内容都不是很安全。 如果您不完全信任输入,您可以使用例如http://api.jquery.com/jQuery.getJSON/

【讨论】:

  • 不需要eval()。有 JSON 解析器。
【解决方案2】:

如果我理解你的问题,你想要 JSON 中的返回数据然后简单使用

jQuery.ajax({

              dataType:'json'
})

【讨论】:

    【解决方案3】:

    在返回 html 内容的 PHP 页面中,您可以这样做:

    // $html should contain the html code you want to return, e.g
    // <table>...............</table>
    $html = json_encode(array('html'=>$html));
    echo $html;
    die;
    

    在 javascript 中,你可以这样做:

    function getHtml()
    {
        $.getJSON("yourphpPage.php", function (result)
           {
               $("#yourHtmlDiv").html(result.html);
           }
         );
    }
    

    【讨论】:

    • @jason:如果您一直担心因为 HTML 的数量很大并且传输速度很慢,那么这对您没有多大帮助。它传输相同数量的 HTML。你没有任何优势。
    • @jason 如果愿意,请单击复选标记将其标记为答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-04
    • 1970-01-01
    • 2022-01-25
    • 2020-08-06
    • 2017-01-18
    • 2019-11-20
    • 1970-01-01
    相关资源
    最近更新 更多