AJAX响应:数据(JSON,XML)还是HTML片段?

时间:2009-05-15 06:00:39

标签: html xml ajax json client-server

我只是想知道AJAX响应的“理想”输出格式是什么?使用一些客户端JavaScript模板引擎将纯数据(JSON,XML)呈现到页面中?或者“按原样”呈现在页面中的HTML片段?

您的偏好是什么?为什么?

5 个答案:

答案 0 :(得分:11)

在大多数情况下,您只需要发送JSON(或适当的XML,我使用JSON作为示例)。

  • 如果您要发送股票报价等数据,请使用JSON。
  • 如果您希望保持网络层非常精简,那么发送纯JSON数据并让客户端完成添加标记的繁重工作。
  • 如果客户端页面是持久的,则发送JSON。然后,客户端可以向Person.Name发送问候语。它可以刷新Person.Score或显示一个表单来编辑Person.Status,它们只处理一个Person对象。
  • 如果您要公开Web API,显然要使用JSON,以便客户端可以随心所欲地使用它。

现在说,我真的不喜欢从JavaScript生成HTML。这是一场维护噩梦,我根本不喜欢将两者混合在一起。那么如果您发送的所有内容都是JSON,那么如何避免在JavaScript中生成HTML?如果你正在处理Person(s)对象,当你第一次渲染页面时,你会这样渲染它:

...
<div class="person display">
    <div class="name"></div>
    <div class="status"></div>
    <div class="score"></div>
</div>
...

当您通过AJAX获取人员数据时,只需填充上述DOM结构。

如果您希望显示多个人的信息,那么您应该直接填充它,然后填充它,而不是直接填充DOM结构。这样,您的模板保持不变,您可以重复使用它。

答案 1 :(得分:6)

这在很大程度上取决于将要使用的数据

用于mashup和Web服务

对于将在您的应用和外部使用的数据,请勿使用HTML:难以解析,难以使其适合其他结构。

如果它只是少数数据,比如为小部件更新的数据,请使用JSON,因为它快速且易于使用。

如果数据很多,比如搜索查询的结果,则使用XML,因为它对于大量数据分析更加灵活。

仅供内部使用

不要使用纯XML。无论如何,批量分析总是在输出之前完成。

大多数情况下,你会想要使用JSON,因为它比HTML更灵活,但设置得相当快。

如果您知道之后不需要处理数据且布局复杂,请使用HTML。在服务器端编写复杂的HTML比使用DOM要容易得多。

答案 2 :(得分:2)

如果要返回大量HTML,最好将它放在服务器端,然后将其加载到页面中。

如果要返回类似于一堆键值对的内容来更新<select>或类似内容,最好将其作为JSON返回并在客户端构建HTML。

答案 3 :(得分:0)

对我来说没有“理想”的方式。 当我需要分页时,使用纯JSON和jTemplates与jQuery进行客户端渲染,我已经是模板客户端。

当我要实现对服务器的简单调用时,也使用JSON:自动完成,就地编辑,保存草稿等。

当我需要分支新页面片段时,我使用HTML呈现:加载模板,向页面添加窗格,呈现自定义控件。

顺便说一句,我可以选择json,因为我们可以切换到客户端对象操作,而不只是拥有“更新面板”。

答案 4 :(得分:0)

这取决于具体情况,我更喜欢向客户端发送数据,并使用客户端框架更新页面,因为我有一个可用的。如果我正在写自己的,并且片段足够小,id可能在服务器端做,保持js尽可能的苗条。