IE下通过IXMLHTTPRequest对象用javascipt调用webservice

用XMLHTTPRequest调用ASP、PHP或者JSP页面等等MS的XMLSDK上有例子如下:

例子
   给WEB服务器上的一个ASP页面发出一个包含DOMDocument对象内容的请求,该ASP页面可以,该ASP页面可以根据用户业务的需求接受该DOMDocument对象,并做出相应的处理,然后返回一个XML结果给发出请求的XMLHTTPRequest对象。

客户端代码
<script language="JScript">
  function PostOrder(xmldoc)
  {   
    var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.4.0");
    xmlhttp.Open("POST", "http://myserver/orders/processorder.asp", false);
    xmlhttp.Send(xmldoc);
    return xmlhttp.responseXML;
  }
</script>

服务器端代码
<%@ language=javascript %>
<%
   Response.Expires = -1000;
   // Load the posted XML document.
   var doc = Server.CreateObject("Msxml2.DOMDocument.4.0");
   doc.load(Request);
   if (xmlDoc.parseError.errorCode <> 0) {
      var myErr = xmlDoc.parseError;
      alert("You have error " + myErr.reason);
   } else {
      var result = Server.CreateObject("Msxml2.DOMDocument.4.0");
      // Now process the order and build the result document.
      Response.ContentType = "text/xml";
      result.save(Response);
   }
%>


上面代码中黄色部分为调用动态页面的代码,那么如果我们想用javascript调用webservice该代码该怎么写呢?
假设有一个webservice并且可以通过如下路径访问到该webservice的页面
   http://localhost/jobdotnet/pisInfo/getXml/Service1.asmx
该webservice提供有方法HelloWord,通过如下连接可以访问到该方法的返回结果和相关详细说明
   http://localhost/jobdotnet/pisInfo/getXml/Service1.asmx?op=HelloWorld
则我们可以通过如下方法访问webservice并接受返回的结果

<script language="JScript">
  function PostOrder(xmldoc)
  {
      var xmlReq=new ActiveXObject("Msxml2.XMLHTTP.4.0"); 
      xmlReq.open("post","http://localhost/jobdotnet/pisInfo/getXml/Service1.asmx/HelloWorld"); 
      xmlReq.send(); 
      var xmlDom=new ActiveXObject("Msxml2.domDocument.4.0");
       xmlDom=xmlReq.responseXML; 
      alert(xmlDom.xml);
}
</script>

posted on 2006-09-21 10:13  旭日东生  阅读(870)  评论(0编辑  收藏  举报