|
 |
资料搜索 |
|
|
|
|
|
|
|
 |
相关文章 |
|
|
|
|
|
|
|
|
|
|
| [ 来源:天极网络 | 作者:无从考证 | 时间:2005-11-28 15:10:20 | 浏览:人次 ] | |
|
在嵌入了上面的代码后,我们就可以使用JavaScript代码调用行为并把它链接到兼容WSDL 1.1的Web服务了。这是通过引用被嵌入的行为id(前面代码中的服务)和调用它的useService方法来实现的:
service.useService("http://localhost/MyProjects/WebServiceBehavior/EmployeeService.asmx?WSDL","svcEmployee"); 你需要在页面的onLoad事件句柄中调用useService方法,这样才能确保在调用Web服务的任何方法之前,该Web服务已经映射了。
UseService方法有下面两个参数:
· Web服务的WSDL文件的路径。
· 用于以后引用该Web服务的一个"友好的"名字。每次使用行为调用EmployeeService.asmx文件中的方法的时候都会使用这个名字。 现在已经建立了Web服务并可以访问它了。异步调用Web服务方法可以分为两个步骤。异步调用的优点是Web页面不用等待Web服务返回。第一步,你调用Web方法并把回调(callback)函数作为参数。第二步,在执行了需要的方法后,Web服务返回,启动回调函数。
下面是完整的源代码列表:
<%@ Page language="c#" Codebehind="EmployeeServiceClient.aspx.cs" AutoEventWireup="false" Inherits=" EmployeeWebServiceClient.EmployeeServiceClient" %> <HTML> <HEAD> <title>Employee Details</title> <SCRIPT LANGUAGE="JScript"> //定义一个模块级的变量来捕捉事件id var iCallID ;
function GetEmployeeDetails() { // 调用svcEmployee Web服务的GetEmployeeDetails方法 iCallID = service.svcEmployee.callService(DisplayResults,"GetEmpDetailsByEmpID",txtEmployeeID.value); }
function DisplayResults(result) { var strXML,objXMLNode,objXMLDoc,objEmployee,strHTML; //检查事件id是否相同 if (iCallID != result.id) return; if(result.error) { // 显示错误信息 var faultCode = result.errorDetail.code; var faultString = result.errorDetail.string; alert("ERROR: Code = " + faultCode + ", Fault String=" + faultString); } else { //把结果值赋予本地变量 objXMLNode = result.value; objXMLDoc = new ActiveXObject("Microsoft.XMLDOM"); //把返回的XML字符串载入XMLDOM对象 objXMLDoc.loadXML(objXMLNode.xml); //得到Employees节点的指针 objEmployee = objXMLDoc.selectSingleNode("GetEmpDetailsByEmpIDResult").selectSingleNode("EmployeesRoot").selectSingleNode("Employees"); //检查从服务器返回的雇员指针是否有效 strHTML = "<font color=’#0000FF’>"; if (objEmployee != null) { //动态生成HTML,并把它添加到一个字符串变量中 strHTML += "<br><br>Employee ID :<b>" + objEmployee.selectSingleNode("EmployeeID").text + "</b><br><br>"; strHTML += "Employee First Name :<b>" + objEmployee.selectSingleNode("FirstName").text + "</b><br><br>"; strHTML += "Employee Last Name :<b>" + objEmployee.selectSingleNode("LastName").text + "</b><br><br>"; strHTML += "Employee Title :<b>" + objEmployee.selectSingleNode("Title").text + "</b><br><br>"; strHTML += "Employee Title :<b>" + objEmployee.selectSingleNode("Title").text + "</b><br><br>"; strHTML += "Title Of Courtesy:<b>" + objEmployee.selectSingleNode("TitleOfCourtesy").text + "</b><br><br>"; strHTML += "Postal Code:<b>" + objEmployee.selectSingleNode("PostalCode").text + "</b><br><br>"; } else { strHTML += "<br><br><b>Employee not found</b>"; } strHTML += "</font>" //把动态生成的HTML赋予div标记 divContents.innerHTML = strHTML; } }
function init() { // 建立Web服务的实例并把它叫做svcEmployee service.useService("http://localhost/MyProjects/15Seconds/WebServiceBehavior/_ EmployeeWebService/EmployeeService.asmx?WSDL","svcEmployee"); }
</SCRIPT> </HEAD> <body onload="init()"> <div id="service" style="BEHAVIOR: url(webservice.htc)"></div> <H1 align="center"> <font color="#800080">Employee Details</H1> </FONT> <br><br> <P align="left"><font color="#800080"><b>Enter the Employee ID:</b></font> <INPUT id="txtEmployeeID" name="txtEmployeeID" style="LEFT: 149px; TOP: 72px"><INPUT id="btnAdd" type="button" value="Get Employee Details" name="btnGetEmployee" onclick="return GetEmployeeDetails()"></P><P></P> <div id="divContents"> </div> <P></P> </body> </HTML> 在GetEmployeeDetails方法中,你通过把回调方法名称和输入参数作为参数传递给Web服务来调用该Web服务的web方法。这是通过调用Web服务行为的callService方法实现的:
function GetEmployeeDetails() { // 调用svcEmployee web服务的GetEmployeeDetails方法 iCallID = service.svcEmployee.callService(DisplayResults,"GetEmpDetailsByEmpID",txtEmployeeID.value); } CallService方法返回一个唯一的标识符,它可以用于识别Web服务调用。如果你进行多个异步Web服务调用,接着在客户端浏览器中把结果拼装在一起,那么这个标识符就是必要的。在这种情况下,你把这个ID与作为result对象的一个属性返回的ID进行匹配。匹配过程是在回调函数中完成的:
function DisplayResults(result) { var strXML,objXMLNode,objXMLDoc,objEmployee,strHTML
|
|
|
|
|
|
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。 |
|
|
|
|
|
栏目编辑: 设计风 |
责任编辑: 简若宁 |
|
|
原始作者: 无从考证 |
录入时间: 2005-11-28 15:10:20 |
|
|
信息来源: 天极网络 |
投稿信箱: Edu#chinaz.com |
|
|
|
| |
|