【问题标题】:Do you Ajax JSON or HTML? [closed]你使用 Ajax JSON 还是 HTML? [关闭]
【发布时间】:2011-03-22 04:08:41
【问题描述】:

执行 AJAX 的首选方式是什么。

如果它是用 PHP 编写的使用 Jquery 的 AJAX 搜索页面

你会如何处理响应

a) 让响应包含所有相关的 html/样式

b) 发送纯 JSON 并让 javascript 函数围绕 javascript 变量构建 html/样式。

我可以看到两者的优势。 'a' 显然更容易,而 'b' 更有效(尽管 gzip 可能会使差异可以忽略不计)。

【问题讨论】:

标签: jquery html ajax json


【解决方案1】:

我会选择 html:

  • 进行从 json 到 html 的转换会使客户端变慢(而且您对用户客户端的性能一无所知)
  • 在 json 中执行意味着您必须转换两次(从服务器的数据结构到 json,然后从 json 到 html)
  • 您可能已经在服务器上进行了 html 渲染,因此您拥有基础架构
  • 网络流量差异可以忽略不计
  • 您可以使用为您完成所有工作的库(例如,使用 JQuery,返回 html 的 ajax 调用将变为 jQuery('#div').load(url))。

【讨论】:

    【解决方案2】:

    我会说“a”是您最想坚持的选项。

    在服务器端保持一致的模板要容易得多(您可以在非 AJAX 场景中重用它们)。

    客户端模板不是很优雅(如果你打算这样做,我建议:http://ejohn.org/blog/javascript-micro-templating/

    在样式方面,我会在页面加载时包含一个缩小的样式表,而不是在加载内容时。

    【讨论】:

      【解决方案3】:

      就个人而言,我主要从 ajax 调用返回 HTML 的 sn-ps,除非我需要以编程方式处理返回的数据。例如:

      • 自动完成功能。返回一个 JSON 数据数组,使用 javascript 创建适当的元素。
      • 任何不真正请求数据但实际发布数据的内容。想到了在线编辑。我通常以 JSON 格式返回状态消息。

      话虽如此,显然我觉得这两个选项都是有效的。我敢肯定纯粹主义者会不同意,但有时返回普通的 HTML 就足够了。

      【讨论】:

        【解决方案4】:

        我会默认使用 Json。它是一种轻量级(低开销)、易于实现的数据交换格式。你只需要一个好的 Object-to-Json 库就可以让 'b' 变得简单。

        【讨论】:

          【解决方案5】:

          您必须在这里问自己的重要问题是,您的目标是什么。你呢

          • 希望有更多的网络流量和更少的客户端 CPU 使用率
          • 希望有更多的客户端 CPU 使用率和更少的网络流量

          在这种情况下,另一个问题是,有多少人在呼叫您的网站。如果您每天有数十万的页面访问量,您应该考虑减少例如有线流量。

          在大多数情况下,您不仅想生成 HTML 标记,还想发送一些 发送给客户端的普通数据,您可以在 ECMA-/Javascript 中处理这些数据。 因此,JSON 应该是您的首选(如果您不必处理巨大的数据块)。 JSON 是轻量级的,可以使用 javascript 快速解析 extremly

          重复一遍,是在您的服务器上生成完整的渲染标记并将其交付给客户端还是让客户端完成这项工作取决于您打算做什么。

          静态页面就是你猜对的,静态的。但这意味着客户端/浏览器不使用 cpu。因此,如果您不需要/不想拥有“动态”页面行为,那么使用静态页面就可以了。

          【讨论】:

            【解决方案6】:

            由于数据和表示的逻辑分离,JSON 方法很有吸引力。如果将来某个时候需要更改样式(表示),这将不可避免地发生,那么 JSON 数据就不需要更改,不是吗?

            【讨论】:

            • 好吧,如果您要更改样式,则必须更新您的 HTML(如果返回 HTML)或更新您的 JS 和/或 JS 模板(如果返回 JSON)。在我看来,前者会更容易一些。
            猜你喜欢
            • 2010-10-26
            • 1970-01-01
            • 2014-03-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-09-28
            • 1970-01-01
            相关资源
            最近更新 更多