我只是想知道AJAX响应的“理想”输出格式是什么?使用一些客户端JavaScript模板引擎将纯数据(JSON,XML)呈现到页面中?或者“按原样”呈现在页面中的HTML片段?
您的偏好是什么?为什么?
答案 0 :(得分:11)
在大多数情况下,您只需要发送JSON(或适当的XML,我使用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)
这在很大程度上取决于将要使用的数据:
对于将在您的应用和外部使用的数据,请勿使用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尽可能的苗条。