你是Ajax JSON还是HTML?

时间:2010-07-28 13:42:47

标签: jquery html ajax json

做AJAX的首选方法是什么。

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

您将如何处理回复

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

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

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

6 个答案:

答案 0 :(得分:5)

我会选择html:

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

答案 1 :(得分:4)

我会说'a'是你最想坚持的选择。

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

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

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

答案 2 :(得分:3)

就个人而言,我主要从ajax调用返回HTML代码片段,除非我需要以编程方式对返回的数据执行某些操作。例如:

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

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

答案 3 :(得分:2)

你在这里要问的重要问题是,你的目标是什么。你

  • 希望通过线路获得更多流量,减少客户端CPU使用量
  • 希望通过线路获得更多客户端CPU使用和更少流量

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

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

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

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

答案 4 :(得分:2)

我默认会选择Json。它是一种轻量级(低开销),易于实现的数据交换格式。你只需要一个好的Object-to-Json lib来使'b'变得容易。

答案 5 :(得分:0)

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