我有一个相当ajax重的站点,一些3K html格式的页面从ajax请求插入到DOM中。
我一直在做的是获取html响应,然后使用jQuery插入整个内容。
我的另一个选择是以xml(也可能是json)输出,然后解析文档并将其插入页面。
我注意到,似乎大多数大型站点都是以JSON/XML的方式进行工作的。Google Mail返回xml而不是格式化的HTML。
这是业绩使然吗?或者说,使用XML/JSON还是仅仅检索HTML是另一个原因?
从javascript的角度来看,注入直接的html似乎是最简单的。在jQuery中,我只是这样做
jQuery.ajax({
type: "POST",
url: "getpage.php",
data: requestData,
success: function(response) {
jQuery('div#putItHear').html(response);
}
使用XML/JSON响应,我必须
jQuery.ajax({
type: "POST",
url: "getpage.php",
data: requestData,
success: function(xml) {
$("message",xml).each(function(id) {
message = $("message",xml).get(id);
$("#messagewindow").prepend("<b>" + $("author",message).text() +
"</b>: " + $("text",message).text() +
"<br />");
});
}
});
显然,从代码的角度来看,效率不是那么高,而且我也不能期望浏览器的性能会更好,那么为什么要用第二种方式呢?
与返回HTML相比,返回JSON/XML为应用程序提供了更多的自由,并且对不同领域(数据和标记)的特定知识要求更少。
由于数据仍然只是数据,您将如何显示它的选择权留给事物的客户端。这使得许多代码可以在客户端而不是在服务器上执行--服务器端只需要知道数据结构,而不需要知道标记。程序员需要知道的只是如何传递数据结构。
客户机实现只需要知道如何显示服务器返回的数据结构,而不需要担心这些结构实际上是如何得到构建的。程序员需要知道的只是如何显示数据结构。
如果要构建另一个客户机(不使用HTML作为标记语言),则可以重用所有服务器组件。构建另一个服务器实现也是如此。
它通常会减少传输的数据量,从而提高传输速度。由于任何在线上的东西通常是流程中的瓶颈,因此减少传输时间将减少执行流程所花费的总时间,从而改善用户体验。
以下是发送JSON/XML而不是HTML的几个优点:
script
标记中,这允许跨域AJAX场景