. NET 技术讨论

学于明志,交流增加见识,讨论改变思维
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

使用webservice行为组件(webservice.htc) 调用webservice

Posted on 2006-03-02 10:41    阅读(390)  评论(0编辑  收藏  举报

1 使用webservice.htc的限制:
 1>要想使用webservice行为组件访问webservice必须保证包含组件的页面和webservice在相同的域中,对于远程服务可以建立本地的中转代理webservice实现。
  2>webservice行为组件支持.net中的基本数据类型及其数组,但是用于DataSet自定义类等不提供直接支持,如果使用可以做相应的转化。
  3>保证浏览器是IE5.0或者以上版本。
 
2 使用步骤
 1>先从微软网站上下载webservice.htc,
 2>把webservice行为组件帮定到一个html元素。
 3>用webservice行为组件的useService提供webservice的地址。
 4>用webservice行为组件的callService访问webmethod。

3 建立webservice,继续使用以前的http://netboy.cnblogs.com/archive/2006/02/18/333260.html

4 webservice.htc之事件处理器
<html>
<title>
Call webservice with javascript and webservice.htc-事件处理器
</title>
<body onload="BindService('zzq')">
<script language="javascript">

function BindService(name){
//service.useService({webservice location},{webservice class name})
service.useService("http://localhost:1323/WebSite6/Service.asmx?WSDL","Service");
//service.Service.callService({webmethod},{input parameters needed})
service.Service.callService("SayHelloTo",name);
}


function ShowResult()
{
 if (event.result.error)
 {
  document.write(event.result.errorDetail.string);
 }
 else
 {
  document.write(event.result.value);
 }
}

</script>
<div id="service" style="behavior:url(webservice.htc)" onresult="ShowResult()"></div>
</body>
</html>

5 webservice.htc之回调函数
<html>
<title>
Call webservice with javascript and webservice.htc-回调函数
</title>
<body onload="BindService('zzq')">
<script language="javascript">

function BindService(name){
service.useService("http://localhost:1323/WebSite6/Service.asmx?WSDL","Service");
//callService({callBackFunction},{webmethod},{input parameters needed})
service.Service.callService(callback,"SayHelloTo",name);
}

function callback(res){
if (!res.error)
document.write(res.value);
}
</script>
<div id="service" style="behavior:url(webservice.htc)" onresult="ShowResult()"></div>
 </body>
</html>

6 其他
使用webservice.htc返回的是标准的xml文档,所以从理论上来说任何复杂的结果都可以通过解析xml文档来得到需要的结果。对于从数据库中返回的
记录可以做转化变成字符串数据的形式返回,在js中可以直接获取,var myArray=new Array(); myArray=result.value.剩下的你想怎么做就怎么做了。
使用webservice.htc+setInserval可以实现局部刷新,也就是不用刷新整个页面就可以实现局部定时更新的效果。