用JavaScript调用WebService的示例

  步骤如下:

  下载微软HTC组件:http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/samples/internet/behaviors/library/webservice/default.asp

  Web服务WSDL:

  <?xml version="1.0" encoding="UTF-8"?>

  <definitions name="WS_SYSTEM_LOGIN_SELECT" targetNamespace="SCRM4U_SERVICE" xmlns:tns="SCRM4U_SERVICE" xmlns:wsdlns="SCRM4U_SERVICE" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns1="SCRM4U_SERVICE">

  <document>

  <URL>http://192.168.2.148:8080/SCRM4U_SERVICE/servlet/HLP_PWS_SYSTEM_LOGIN_SELECT.htm</URL>

  <line>?</line>

  </document>

  <types>

  <schema targetNamespace="SCRM4U_SERVICE" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" elementFormDefault="qualified">

  <complexType name="W_S_LOGIN_USER_INFO">

  <all>

  <element name="W_V_USID" type="xsd:string">

  </element>

  <element name="W_V_USER_MEI" type="xsd:string">

  </element>

  <element name="W_V_USID2" type="xsd:string">

  </element>

  <element name="W_V_REM_PHR" type="xsd:string">

  </element>

  <element name="W_V_REM_RES" type="xsd:string">

  </element>

  <element name="W_V_USR_AST" type="xsd:string">

  </element>

  <element name="W_V_PSN_NO" type="xsd:string">

  </element>

  <element name="W_V_MENUROLE_ID" type="xsd:string">

  </element>

  <element name="W_V_USR_AST_NM" type="xsd:string">

  </element>

  <element name="W_N_USR_AST_PRI_ORD" type="xsd:long">

  </element>

  <element name="W_V_SCHOOL_ID" type="xsd:string">

  </element>

  <element name="W_V_EXM_NO" type="xsd:string">

  </element>

  <element name="W_V_SCRG_NO" type="xsd:string">

  </element>

  <element name="W_V_GRNTR_PSN_NO" type="xsd:string">

  </element>

  </all>

  </complexType>

  <element name="WS_SYSTEM_LOGIN_SELECT.Execute">

  <complexType>

  <sequence>

  <element minOccurs="1" maxOccurs="1" name="P_v_userid" type="xsd:string"/>

  <element minOccurs="1" maxOccurs="1" name="P_v_password" type="xsd:string"/>

  </sequence>

  </complexType>

  </element>

  <element name="WS_SYSTEM_LOGIN_SELECT.ExecuteResponse">

  <complexType>

  <sequence>

  <element minOccurs="1" maxOccurs="1" name="P_s_login_user_info" type="tns1:W_S_LOGIN_USER_INFO"/>

  </sequence>

  </complexType>

  </element>

  </schema>

  </types>

  <message name="WS_SYSTEM_LOGIN_SELECT.ExecuteSoapIn">

  <part name="parameters" element="tns:WS_SYSTEM_LOGIN_SELECT.Execute"/>

  </message>

  <message name="WS_SYSTEM_LOGIN_SELECT.ExecuteSoapOut">

  <part name="parameters" element="tns:WS_SYSTEM_LOGIN_SELECT.ExecuteResponse"/>

  </message>

  <portType name="WS_SYSTEM_LOGIN_SELECTSoapPort">

  <operation name="Execute">

  <input message="wsdlns:WS_SYSTEM_LOGIN_SELECT.ExecuteSoapIn"/>

  <output message="wsdlns:WS_SYSTEM_LOGIN_SELECT.ExecuteSoapOut"/>

  </operation>

  </portType>

  <binding name="WS_SYSTEM_LOGIN_SELECTSoapBinding" type="wsdlns:WS_SYSTEM_LOGIN_SELECTSoapPort">

  <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

  <operation name="Execute">

  <soap:operation soapAction="SCRM4U_SERVICEaction/AWS_SYSTEM_LOGIN_SELECT.Execute"/>

  <input>

  <soap:body use="literal"/>

  </input>

  <output>

  <soap:body use="literal"/>

  </output>

  </operation>

  </binding>

  <service name="WS_SYSTEM_LOGIN_SELECT">

  <port name="WS_SYSTEM_LOGIN_SELECTSoapPort" binding="wsdlns:WS_SYSTEM_LOGIN_SELECTSoapBinding">

  <soap:address location="http://192.168.2.148:8080/SCRM4U_SERVICE/servlet/aws_system_login_select"/>

  </port>

  </service>

  </definitions>

  演示代码:

  <html>

  <head>

  </head>

  <script language="javascript">...

  function doService(userid, password) ...{

  //service.useService({webservice location},{webservice class name})

  service.useService("http://192.168.2.148:8080/SCRM4U_SERVICE/servlet/aws_system_login_select?wsdl","WS_SYSTEM_LOGIN_SELECT");

  //service.Service.callService({webmethod},{input parameters needed})

  service.WS_SYSTEM_LOGIN_SELECT.callService(showResult, "Execute", userid, password);

  }

  function showResult(result)...{

  alert(result.value.W_V_USER_MEI);

  }

  </script>

  <body>

  <div id="service" style="behavior:url(./webservice.htc)" ></div>

  UserName:<input type="text" id="userid" name="userid">

  <br/>

  PassWord:<input type="text" id="password" name="password">

  <br/>

  <input type="button" value="callWebservice" onClick="doService(document.getElementById('userid').value,document.getElementById('password').value)"/>

  </body>

  </html>

  注意:如果服务返回值类型是String,直接用result.value即可取到值。