12

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

你的偏好是什么,为什么?

4

5 回答 5

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 结构。

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

于 2009-05-15T07:29:47.907 回答
6

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

用于混搭和 Web 服务

对于将在您的应用程序和外部使用的数据,永远不要使用 HTML:难以解析,难以使其适合其他结构。

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

如果它可以是大量数据,例如搜索查询的结果,请使用 XML,因为它对于大数据分析更加灵活。

仅限内部使用

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

大多数时候,您会想要使用 JSON,因为它比 HTML 更灵活,而且部署起来相当快。

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

于 2009-05-15T07:38:13.313 回答
2

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

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

于 2009-05-15T06:05:43.770 回答
0

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

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

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

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

于 2009-05-15T06:45:23.003 回答
0

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

于 2009-05-15T07:25:22.753 回答