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

12

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

您更偏向于哪种方式,为什么?

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

如果您希望显示多个人的信息,则应该制作其副本然后填充它,而不是直接填充DOM结构。这样,您的模板保持完整并可以重复使用。


6

这很大程度上取决于数据将用于什么

用于混搭和Web服务

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

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

如果可能有大量数据,例如搜索查询结果,请使用XML,因为它更灵活,适合处理大量数据。

仅供内部使用

不要费心使用纯XML。输出之前总是会进行批量分析。

大多数情况下,您将希望使用JSON,因为它比HTML更灵活,但放置起来相当快。

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


2
如果您要返回大量HTML,最好在服务器端将其组合起来,然后只需将其加载到页面中。
如果您要返回类似于一堆键值对以更新

0

对我来说,没有一种"理想的"方法。 当需要分页且已经有客户端模板时,使用纯JSON和jTemplates进行客户端呈现,并结合jQuery进行操作。

当需要实现简单的服务器调用时,如自动完成、原地编辑、保存草稿等,也会使用JSON。

当需要创建全新的页面片段时,则使用HTML呈现:加载模板、向页面添加面板、呈现自定义控件。

顺便提一下,如果可以的话,我更喜欢使用JSON,因为这样我们就可以切换到客户端对象操作,而不仅仅是“更新面板”。


0

这取决于情况,我更喜欢将数据发送给客户端,并使用客户端框架更新页面,因为我有一个可用的框架。如果我要自己编写程序,而且代码片段足够小,我可能会选择在服务器端执行,尽量保持 js 尽可能简洁。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接