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

AJAX响应:数据(JSON、XML)还是HTML片段?,html,xml,ajax,json,client-server,Html,Xml,Ajax,Json,Client Server,我只是想知道AJAX响应的“理想”输出格式是什么?使用客户端JavaScript模板引擎将纯数据(JSON、XML)呈现到页面中?还是一个HTML片段“按原样”呈现到页面中 您的偏好是什么?为什么?如果您返回大量HTML,最好将其放在服务器端,然后简单地将其加载到页面中 如果您要返回类似于一组键值对的内容来更新或类似的内容,最好将其作为JSON返回,并在客户端构建HTML。我没有一个“理想”的方法。 当我需要分页时,使用纯JSON和jTemplates使用jQuery进行客户端呈现,并且我已经获

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


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

如果您返回大量HTML,最好将其放在服务器端,然后简单地将其加载到页面中

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

我没有一个“理想”的方法。 当我需要分页时,使用纯JSON和jTemplates使用jQuery进行客户端呈现,并且我已经获得了客户端模板

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

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


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

这取决于具体情况,我更喜欢向客户端发送数据,并使用客户端框架更新页面,因为我有一个可用的框架。如果我自己写,而且代码片段足够小,我可能会在服务器端完成,让js尽可能薄。

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

  • 如果要发送股票报价等数据,请使用JSON
  • 如果您想保持网络层非常精简,那么发送纯JSON数据,让客户机完成添加标记的繁重工作
  • 如果客户端页面是持久的,那么发送JSON。然后,客户端可以向Person.Name发送问候语。它可以刷新Person.Score或显示表单以编辑Person.Status,所有这些都只处理一个Person对象
  • 如果要公开web API,显然要使用JSON,这样客户机就可以用它做任何他们想做的事情
话虽如此,我真的不喜欢从JavaScript生成HTML。这是一个维护的噩梦,我只是不喜欢把两者混为一谈。那么,如果发送的都是JSON,如何避免在JavaScript中生成HTML呢?如果您正在处理Person对象,则在第一次呈现页面时,您会将其呈现为:

...
<div class="person display">
    <div class="name"></div>
    <div class="status"></div>
    <div class="score"></div>
</div>
...
。。。
...
当您通过AJAX获取person数据时,只需填充上面的DOM结构


如果希望显示多人的信息,则不应直接填充DOM结构,而应克隆它,然后填充它。这样,模板就可以保持完整,并且可以重复使用。

这在很大程度上取决于使用数据的内容:

用于mashup和web服务 对于将在应用程序中使用或来自外部的数据,永远不要使用HTML:很难解析,很难使其适合另一种结构

如果数据很少,比如为小部件更新了一些数据,那么就使用JSON,因为它快速且易于使用

如果它可以是大量的数据,比如搜索查询的结果,那么就使用XML,因为它对于海量数据分析更为灵活

仅供内部使用 不用麻烦使用纯XML。无论如何,批处理分析总是在输出之前完成

大多数情况下,您会希望使用JSON,因为它比HTML更灵活,但安装起来相当快

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