AJAX及使用E4X编写Web服务脚本(3)

ajax|web|web服务|脚本

我们设置了两个 HTTP 头信息——SOAPAction 和 Content-Type——然后使用 xmlhttp.send(xml.toString()) 将 SOAP 信封消息发送出去。

如果该调用行为是异步的,那么在调用从该响应创建的 XML 回调函数之前,它需要等待,直到 readyState 为 4(全部完成)。

因此使用该操作的代码如下所示:

   var url = document.getElementById("url").value;

   var callback = function(resp) {

alert(resp..*::getQuoteReturn);

}

   execService(url, envelope, callback);

在我们的样例中,我们使用异步模型。典型的 Web 浏览器在与服务器通话时并不阻塞,并且我们也不希望它那样。举例来说,如果我们阻塞了浏览器,那么浏览器的窗口可能最终表现为“不响应”状态,从而促使用户结束它。

resp..*::getQuoteReturn

如果您是 E4X 新手,那么需要再次理解该语法。.. 意味着从树中搜索命名的元素。*:: 意味着任意的命名空间,因此该数值将是在响应 SOAP 封装的任意命名空间中被称为 getQuoteReturn 元素的数值。 

实际的样本代码 stockclient.html 同样也显示了该请求和响应 SOAP 封装。测试该样本——您应该看到如下内容:

图 2. 显示请求和响应 SOAP 封装的 stockclient.html
该 stockclient.html 看上去类似一个传统的使用提交按钮的 Web 页面,尽管它事实上并不是(浏览器一直在查看该页面,从未更改)。我们创建了该文件,以便您能理解交互行为。但是,真正的 AJAX 版本的页面要美观很多。此 stockclientAjax.html 没有按钮。随着您键入操作的进行,它会自动地更新股票价格。测试该样本。

虽然该页面没有按钮,但是只要您停止键入操作,它就能自动地做出请求(在做出请求之前,它需要等待 0.6 秒钟,以便在您停止的时候它能够“感应”到)。

生成来自 Rhino 的 Web 服务请求

 Rhino 并不支持 XMLHTTPRequest 对象,但是这个问题您不必担心。因为 Rhino 运行在 Java 环境中,您可以使用 Java 功能来生成 Web 服务请求 。为演示该操作,我们编写了一个 XMLHttpRequest 对象的简单 Java 实现。Rhino 允许 Java 程序员发布 Java 语言来扩展它们的 JavaScript 环境。为了使用 Rhino shell 中的 XMLHttpRequest 对象,您只需确保 e4xutils.jar 在自己的类路径中,然后您就可以使用 shell 命令,defineClass,将其添加到自己的环境中:

>set classpath=.\js.jar;.\xbean.jar;.\e4xutils.jar;.

>java org.mozilla.javascript.tools.shell.Main

Rhino 1.6 release 1 2004 11 30H

js> defineClass('xmlhttp.XMLHttpRequest');

下面有个很简单的脚本程序对其进行测试:

>test.js

defineClass("xmlhttp.XMLHttpRequest");

var xh = new XMLHttpRequest();

xh.open("GET",

"http://services.xmethods.net/soap/urn:xmethods-delayed-quotes.wsdl",

false);

xh.send(null);

var wsdl = new XML(xh.responseText);

print(wsdl..*::address.@location);

>java org.mozilla.javascript.tools.shell.Main test.js

http://64.124.140.30:9090/soap

结果就是您现在可以使用您已经在 Mozilla 和 Rhino 中写入(E4X+XMLHttpRequest)的相同的脚本程序。

结束语

到目前为止,您已经看到了如何使用 E4X 和 Javascript 来初始化 Web 服务请求。

  • Ajax: 一个建立Web应用的新途径
  • Ajax的错误处理机制探讨(2)
  • Ajax的错误处理机制探讨(1)
  • 初次体验.NET Ajax无刷新技术
  • Rails系统中的AJAX开发技术简析(4)
时间: 2024-08-25 18:13:04

AJAX及使用E4X编写Web服务脚本(3)的相关文章

AJAX及使用E4X编写Web服务脚本

ajax|web|web服务|脚本   本文先简单介绍一下可以用于 XML的 ECMAScript(ECMAScript for XML,E4X),它是一种对 JavaScript 的简单扩展,这使得编写 XML 脚本非常的简单.在本文中,作者演示了一种称为异步 JavaScript 及 XML(Asynchronous JavaScript and XML,AJAX)的 Web 编程模型,并且向您展示 JavaScript 的一些新 XML 扩展是如何使其更易于实现. 用于 XML 的 ECM

AJAX及使用E4X编写Web服务脚本(1)

ajax|web|web服务|脚本 本文先简单介绍一下可以用于 XML的 ECMAScript(ECMAScript for XML,E4X),它是一种对 JavaScript 的简单扩展,这使得编写 XML 脚本非常的简单.在本文中,作者演示了一种称为异步 JavaScript 及 XML(Asynchronous JavaScript and XML,AJAX)的 Web 编程模型,并且向您展示 JavaScript 的一些新 XML 扩展是如何使其更易于实现.  用于 XML 的 ECMA

AJAX及使用E4X编写Web服务脚本(2)

ajax|web|web服务|脚本 for each (var p in x.person) { if (p.height.@measure=="metric") p.height=metricToImperial(p.height);  } print (x); 这里是输出内容: <people> <person gender="male"> <name>Ant</name> <hair>Shaggy&l

Ajax基础教程(4)- 实现基本Ajax技术 4.8 访问Web服务

多年以来一直存在一个软件工程问题:从一台机器调用另一台机器上的服务或方法,即使这些机器使用完全不同的硬件或软件.对于这个问题,最近提出的解决方案是Web服务.几年前,Web服务大受吹捧,它的头上围绕着耀眼的光环,有些人认为Web服务就是分布式软件开发的"圣杯".后来,它的光芒逐渐黯淡下来,Web服务最终找到了自己合适的位置,它是支持异构计算机系统相互操作的一种有用的工具. Web服务通常用作为计算机系统之间的通信管道,这与CORBA(公共对象请求代理体系结构).RMI(远程方法调用)或

使用vbscript脚本调用web服务

vbscript|web|web服务|脚本 最近碰到的一个问题,需要在asp和客户端调用.NET的webservice,也就是说需要用vbscript或javascript来调用webservice.在网上看了看,大多数方案都是利用SOAP Toolkit,但是因为SOAP Toolkit在今年就会被停止后续的支持了,并且要使用soapclient需要专门安装SOAP Toolkit,这对客户端来说不具有通用性,因此想到了使用xmlhttp,利用xmlhttp来和webservice交互. 客户

PHP5中使用Web服务访问J2EE应用程序(4)

j2ee|php5|web|web服务|程序|访问 处理 SOAP 错误 如果运行客户机时出现错误怎么办?与其他语言(如 Java)一样,PHP 5 新增加了一种异常机制.ext/soap 使用这种新的机制,以 SoapFault 对象的形式返回错误.比方说,可以用下面这种形式将代码包装起来: try {... some SOAP operation} catch (SoapFault $soapFault) {echo $soapFault;} 注意,与 Java 有所不同,PHP 语言的 t

PHP5中使用Web服务访问J2EE应用程序

j2ee|php5|web|web服务|程序|访问 很多 Web 开发人员喜欢 PHP 的丰富功能和简单易用,但有时候他们需要访问 J2EE 应用程序服务器中已有的业务逻辑.本文将通过一些例子说明如何通过 PHP 5 中新的 SOAP 扩展使用 Web 服务来访问 J2EE 应用程序,而不必脱离 PHP 环境,也不用学习新的编程模型. PHP.Web 服务和 SOAP 简介 本文将介绍如何从 PHP 脚本中访问企业应用程序.您可能是一位 PHP 程序员,需要为部门 Web 应用程序编写代码,以便

如何实现 Android 调用基于 IBM i 的 Web 服务

实现 Android 调用基于 IBM i 的 Web 服务 作为 Internet 异构环境下的互操作技术,Web 服务被广泛应用.由于 Web 服务具有跨语言.跨平台等特点,我们可以通过 Android 等智能设备,以 Web 服务的方式重用 IBM i 服务器端的 RPG.COBOL 等业务程序.本文的主要目标是,结合 IBM i 支持的 Web 服务组件,指导读者如何编写基于 Android 的 Web 服务客户端程序,调用 IBM i 服务器端的 Web 服务. 从结构上,本文主要分为

基于Android系统调用IBM i服务器端的Web服务

本文的主要目标是,结合 IBM i 支持的 Web 服务组件,指 导读者如何编写基于 Android 的 Web 服务客户端程序,调用 IBM i 服务器 端的 Web 服务. 作为 Internet 异构环境下的互操作技术,Web 服务被广泛应用.由于 Web 服务具有跨语言.跨平台等特点,我们可以通过 Android 等智能设备,以 Web 服务的方式重用 IBM i 服务器端的 RPG.COBOL 等业务程序.本文的主要目标是,结合 IBM i 支持的 Web 服务组件,指导读者如何编写基