实现web页面的局部刷新

服务器的回传会引发整个页面的刷新,怎么样只让它刷新局部呢,前几天看见书上有讲用

WebService行为的,今天试了试,效果还不错

在web目录中需要一个文件webservice.htc

可以到这里下载: http://msdn.microsoft.com/workshop/author/webservice/webservice.htc

见一个WebService 文件名为Service1.asmx:

[WebService(Namespace=" http://localhost/BehaviorService/ ")]
public class TestService : System.Web.Services.WebService
{

///

1<summary>   
2/// 返回服务器的时间   
3/// </summary>

[WebMethod]
public string GetServerTime()
{
return DateTime.Now.ToString();
}
}

在同级目录下进一个html文件,内容如下:

 1<script>   
 2var intCallId = 0; 
 3
 4function Init()   
 5{   
 6GetServerTime();   
 7setInterval("GetServerTime()",1000);   
 8} 
 9
10function GetServerTime()   
11{   
12Service.useService("Service1.asmx?WSDL","TestService");   
13intCallId = Service.TestService.callService("GetServerTime");   
14} 
15
16function service_result()   
17{   
18if (event.result.error)   
19{   
20showresult.innerText = event.result.errorDetail.string;   
21}   
22else   
23{   
24showresult.innerText = event.result.value;   
25}   
26} 
27
28</script>
1<html>
2<body onload="Init();">
3<div id="Service" onresult="service_result()" style="behavior:url(webservice.htc)"></div>
4<span id="showresult"></span>
5</body>
6</html>

我查看 http://localhost/BehaviorService/test1.htm 就可以看到一个服务器上的时间了

而且是会动的,通过这种方法就可以实现页面的局部刷新了

有两点限制:

1.行为只能用域内的web服务,因为DHTML内置的安全限制造成的

2.通过的这种方式的访问的类型会被限制,行为支持.net的基本类型和它们的数组

如:dataset,datatable得复杂类型就不支持了

Published At
Categories with Web编程
Tagged with
comments powered by Disqus