预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共12页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Ajax已普遍用于许多知名的Web应用程序服务,例如GMail、GoogleMaps、Flickr和Odeo.com。通过使用异步XML消息传递,Ajax为Web开发人员提供了一种扩展其Web应用程序价值和功能的途径。这里介绍的WebServicesJavaScriptLibrary扩展了该基础机制,其通过引入对调用基于SOAP的Web服务的支持来增强Ajax设计模式。 从浏览器中调用Web服务 请访问Ajax技术资源中心,这是有关Ajax编程模型信息的一站式中心,包括很多文档、教程、论坛、blog、wiki和新闻。任何新信息都能在这里找到。从Web浏览器中调用SOAPWeb服务可能会比较麻烦,这是因为大多数流行的Web浏览器在生成和处理XML方面都略有不同。所有浏览器都一致实现且用于XML处理的标准API或功能少之又少。 浏览器实现人员一致支持的机制之一是XMLHttpRequestAPI,它是Ajax设计模式的核心。developerWorks网站最近发布的另一篇由PhilipMcCarthy撰写的的文章详细介绍了该API。XMLHttpRequest是一个用于执行异步HTTP请求的JavaScript对象。PhilipMcCarthy在其文章中描述了一个顺序图(请参见图1),此图对于理解XMLHttpRequest对象如何支持Ajax设计非常有帮助(请参阅参考资料,以获得指向全文的链接)。 图1.PhilipMcCarthy的Ajax顺序图 从此图中,您可以清楚地看到XMLHttpRequest对象是如何工作的。一些运行在Web浏览器内的JavaScript创建了一个XMLHttpRequest实例和一个用于异步回调的函数。然后,该脚本使用XMLHttpRequest对象对服务器执行HTTP操作。在接收到响应后,调用回调函数。在该回调函数内,可能处理返回的数据。如果返回的数据碰巧是XML,则XMLHttpRequest对象将自动使用浏览器中内置的XML处理机制来解析该数据。 遗憾的是,使用Ajax方法的主要难题在于XMLHttpRequest对象自动解析XML的详细过程。例如,假设我正在请求的数据是一个SOAP信封,其包含来自许多不同XML命名空间的元素,并且我希望提取yetAnotherElement中属性attr的值。(请参见清单1) 清单1.一个包含多个命名空间的SOAP信封 <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <s:Header/> <s:Body> <m:someElementxmlns:m="http://example"> <n:someOtherElement xmlns:n="http://example" xmlns:m="urn:example"> <m:yetAnotherElement n:attr="abc" xmlns:n="urn:foo"/> </n:someOtherElement> </m:someElement> </s:Body> </s:Envelope> 在Mozilla浏览器和Firefox浏览器中,提取attr属性值非常简单,如清单2所示。 清单2.在Mozilla和Firefox中检索attr属性值的方法不能运用在InternetExplorer中 varm=el.getElementsByTagNameNS( 'urn:example', 'yetAnotherElement')[0]. getAttributeNS( 'urn:foo', 'attr'); alert(m);//displays'abc' 关于安全性 由于涉及许多实际安全问题,因此在缺省情况下,大多数Web浏览器中的XMLHttpRequest对象都限制为只能与用户正在查看的Web页所在的域中承载的资源和服务进行交互。例如,如果我正在访问一个位于http://example.com/myapp/的页面,则XMLHttpRequest将只允许访问位于example.com域中的资源。对于阻止恶意应用程序代码潜在地对其不应该访问的信息进行不适当的访问,这种预防措施非常必要。因为这里介绍的Web服务客户机基于XMLHttpRequest,所以这种限制同样适用于您将会调用的Web服务。 如果您需要能够访问位于另一个域中的Web服务,您可以使用以下两种合理的解决方案: 对JavaScript进行数字签名。通过对Java