IT技术博客大学习 共学习 共进步

Ajax和WEB服务数据格式:XML SOAP HTML

RockUX | WEB、前端、JavaScript、PHP 2011-06-02 23:33:36 浏览 4,024 次

    当AJAX被创建的时候,他的原意是:Asynchronous JavaScript and XML,异步的javascript和XML,总的说来就是这样的:

  • 首先创建一个网络服务,比如可以传递HTTP GET/POST参数的PHP页面,然后返回一个XML格式的响应
  • 写一些客户端的js代码。比如传递参数和解析XML。这些调用是异步的,所以在等待数据的过程中浏览器不会被卡死。
  • 处理XML中的数据,然后更新DOM节点
  •     AJAX这个名词被开发者和销售人员滥用了。今天这个本应该全大写缩写的词已经成为了一个新词,表示在不刷新页面的情况下的数据的传输。原因有:

  • 没有必要一定使用异步方法
  • 不一定使用JavaScript
  • 也不需要XML
  •     最终,不论使用什么技术,你都要在两个设备之间传输数据。这是RockUX连载数据格式的第一部分,我们后面还会讲到更多的数据和特性。

    XML

        在一开始,XML是最佳选择。很多语言都有支持XML格式解析和序列化的函数。就算你使用的语言不支持XML,他其实也就是一段文本。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    http://www.sitepoint.com/books/design2/
    Jason Beaird
    SitePoint
    39.95
    
    
    
    http://www.sitepoint.com/books/jquery1/
    Earle Castledine & Craig Sharkie
    SitePoint
    29.95
    
    
    
    http://www.sitepoint.com/books/phpmysql4/
    Kevin Yank
    SitePoint
    39.95

        XML的好处有:

  • XML是可读的而且容易理解。
  • 很多语言都对XML有很好的支持,关键是JavaScript。
  • XML比较安全。数据必须被提取和解析,所以恶意数据得到有效的遏制
  •     但是,XML也有他的缺点:

  • 永远不会有行业统一认可的XML的格式。你需要适配RSS等等,客户端的JavaScript必须理解才行
  • XML格式的数据可能标签比数据的量还大,异步交互情况下,数据越小越好。
  • XML有一些模棱两可的地方,一个数据应该是一个新元素呢还是元数据的属性呢?作为属性可能文件小一点,但是适配这个却不方便。
  • JavaScritp中解析XML很费劲,XPath的支持比较好,所以需要先转换
  • 1
    2
    3
    4
    // grab value in first  element
    var xml = xhr.responseXML;
    var nodes = xml.getElementsByTagName("data");
    var data = (nodes.length > 0 ? nodes[0].firstChild.nodeValue : null);

        很多开发人员认为XML已经死了,但是我不太同意,可能现在XML不是Ajax的最佳选择,但是你也不能知道所有的web服务怎么部署的。而且XML的普及是一个伟大的事情,不要忽略它。

    SOAP

        SOAP是数据交换的一个标准格式。详细的技术细节文档有好几百页,总的来说,SOAP依赖于定义好的XML schemas。

         很少有开发者世界使用SOAP(看见就够了)。SOAP的魅力在于客户端的库可以自动将XML转换成原生的对象。比如.NET的开发人员可以创建一个基于SOAP的网络服务,客户端不需要做太多的事情。作为开发人员,大多使用C#,他们不用在乎远程的机器使用什么东西。

         但是SOAP的缺点:

  • SOAP甚至超越了XML的冗长
  • 在JavaScript中处理SOAP依然很困难。虽然SOAP的库可以协助处理,但是对于开发人员和浏览器来说还是有很大压力的
  •     SOAP仍然是服务端之间通信的选择,尤其是在同一个局域网的情况下。但是在Ajax中用的不多。

    HTML

        如果你想通过Ajax请求在页面中插入代码,HTML是一个简单的格式,不用做太多的处理。例如,假设你在每一个页面都需要显示一个购物车。你在服务器端已经有了这样的HTML代码,那么在选购了意见商品之后就可以返回同样的HTML代码。

         它的好处包括:

  • 很方便使用现有代码,创建网络服务
  • 不需要在客户端进行复杂的数据处理
  • HTML代码可以通过innerHTML快速插入到页面中
  •     但是也有缺点:

  • 很难分离出来真正有价值的数据。比如你想在其他地方以不同的方式显示购物车,这时候就不能用了
  • 传输的数据量也比较大,比XML还大
  • 插入HTML会有破坏现有页面的风险
  • 安全可能成问题,相应的数据可能会有恶意代码
  •     在RockUX后面的文章中我们会讲到:

  • Ajax和WEB服务的数据格式:JSON和JSONP
  • Ajax和WEB服务的数据格式:自定义相应
  • 建议继续学习

    1. XML和JSON (阅读 7,604)
    2. 使用SoapHeader实现Soap请求验证 (阅读 5,924)
    3. HTML5是什么东东 我们为什么要关注 (阅读 4,866)
    4. Ruby 解析 HTML (Nokogiri) (阅读 4,825)
    5. xml转数组的方法 (阅读 4,584)
    6. HTML页面布局基础 (阅读 4,503)
    7. 前端模板引擎 (阅读 4,482)
    8. 信XML,得自信 (阅读 4,482)
    9. Ajax和WEB服务数据格式:JSON JSONP (阅读 4,444)
    10. 为什么不压缩 HTML (阅读 4,344)