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>