7.6.2 通过Microsoft.XMLDOM调用Web Service
7.6.2 通过Microsoft.XMLDOM调用Web Service
(1)在页面中添加如下代码:
- <body>
- <input type="button" value="调用" onclick="getdata()"><br>
- <span id="div1" class="list"></span>
- </body>
(2)调用WebService返回字符串:
- <head>
- <title>通过Microsoft.XMLDOM调用WebService</title>
- <script language="javascript">
- function getdata()
- {
- docSubmit =new ActiveXObject("Microsoft.XMLDOM");
- docSubmit.async = false;
- docSubmit.load("http://localhost:12074/Service1.asmx/
- GetProductPrice?ProductId=001");
- var s=docSubmit.documentElement.text; //获取返回结果
- div1.innerHTML=s;
- }
- //setInterval(getdata,2000);//定时间隔2秒执行
- </script>
- </head>
在docSubmit.load()方法中,填写自己实际的Web Service地址。
(3)再看一个返回数据集的Web Service方法,例如:
- [WebMethod(Description = "获得产品数据列表")]
- public string GetProducts(int topNum)
- {
- Products pro = new Products();
- DataSet ds = pro.GetProducts(topNum);
- return ds.GetXml();
- }
通过Get方式http://localhost:12074/Service1.asmx/GetProducts?topNum=5 调用实际返回的XML数据:
- <?xml version="1.0" encoding="utf-8" ?>
- <string xmlns="http://tempuri.org/">
- <NewDataSet>
- <ds><ProductId>001</ProductId> <Name>test</Name> </ds>
- <ds><ProductId>dd</ProductId> <Name>图书</Name> </ds>
- <ds><ProductId>dn</ProductId> <Name>电脑5</Name> </ds>
- <ds><ProductId>ds</ProductId> <Name>图书</Name> </ds>
- <ds><ProductId>jj</ProductId> <Name>家具</Name> </ds>
- </NewDataSet>
- </string>
(4)获取DataSet数据集的调用脚本:
- <head>
- <title>通过Microsoft.XMLDOM调用WebService</title>
- <script language="javascript">
- function getdata()
- {
- var index=0;
- docSubmit =new ActiveXObject("Microsoft.XMLDOM");
- docSubmit.async = false;
- docSubmit.load("http://localhost:12074/Service1.asmx/
- GetProducts?topNum=5");
- docSubmit.loadXML(docSubmit.xml.replace(/</g,"<").replace(/>/g,">"));
- var s="";
- nodeList=docSubmit.documentElement.getElementsByTagName("ds");
- for (i=0;i<nodeList.length;i++)
- {
- s=s+nodeList(i).selectSingleNode("Name").text+'<br>';//显示产品名称
- }
- div1.innerHTML=s;
- }
- </script>
- </head>
注 意 Fromework 1.0和Fromework 1.1是有区别的,在Fromework 1.1中的 machine.config(C:\WINNT\Microsoft.NET\Framework\v1.1.4322\CONFIG),默认Web Service去除了Post、Get方法。你可在你的 machine.config中或者只在webServices项目的Web.config 的<system.web>里加上:
- <webServices>
- <protocols>
- <add name="HttpPost" />
- <add name="HttpGet" />
- </protocols>
- </webServices>
否则,在IE地址栏中输入webservices地址访问时,将会出现提示请求格式无法识别,如图7-10所示。
(点击查看大图)图7-10 Web服务错误 |
还有ActiveX对象不同:
- //Fromework 1.0版本中
- docSubmit = new ActiveXObject("MSXML2.DOMDocument");
- //Fromework 1.1版本中
- docSubmit = new ActiveXObject("Microsoft.XMLDOM");
欢迎添加我的公众号一起深入探讨技术手艺人的那些事!
如果您觉得本文的内容有趣就扫一下吧!捐赠互勉!