提问者:小点点

ajax html与XML/JSON响应-性能或其他原因


我有一个相当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 />"); 
        });
    }
});

显然,从代码的角度来看,效率不是那么高,而且我也不能期望浏览器的性能会更好,那么为什么要用第二种方式呢?


共3个答案

匿名用户

与返回HTML相比,返回JSON/XML为应用程序提供了更多的自由,并且对不同领域(数据和标记)的特定知识要求更少。

由于数据仍然只是数据,您将如何显示它的选择权留给事物的客户端。这使得许多代码可以在客户端而不是在服务器上执行--服务器端只需要知道数据结构,而不需要知道标记。程序员需要知道的只是如何传递数据结构。

客户机实现只需要知道如何显示服务器返回的数据结构,而不需要担心这些结构实际上是如何得到构建的。程序员需要知道的只是如何显示数据结构。

如果要构建另一个客户机(不使用HTML作为标记语言),则可以重用所有服务器组件。构建另一个服务器实现也是如此。

匿名用户

它通常会减少传输的数据量,从而提高传输速度。由于任何在线上的东西通常是流程中的瓶颈,因此减少传输时间将减少执行流程所花费的总时间,从而改善用户体验。

匿名用户

以下是发送JSON/XML而不是HTML的几个优点:

  1. 如果数据将在应用程序之外使用,HTML可能更难解析并适合其他结构
  2. JSON可以直接嵌入script标记中,这允许跨域AJAX场景
  3. JSON/XML保留了服务器端脚本和视图之间的关注点的分离
  4. 降低带宽

相关问题