實現web頁面的局部刷新
2024-07-21 02:21:23
供稿:網友
服務器的回傳會引發整個頁面的刷新,怎么樣只讓它刷新局部呢,前幾天看見書上有講用
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
{
/// <summary>
/// 返回服務器的時間
/// </summary>
[webmethod]
public string getservertime()
{
return datetime.now.tostring();
}
}
在同級目錄下進一個html文件,內容如下:
<script>
var intcallid = 0;
function init()
{
getservertime();
setinterval("getservertime()",1000);
}
function getservertime()
{
service.useservice("service1.asmx?wsdl","testservice");
intcallid = service.testservice.callservice("getservertime");
}
function service_result()
{
if (event.result.error)
{
showresult.innertext = event.result.errordetail.string;
}
else
{
showresult.innertext = event.result.value;
}
}
</script>
<html>
<body onload="init();">
<div id="service" style="behavior:url(webservice.htc)" onresult="service_result()"></div>
<span id=showresult></span>
</body>
</html>
我查看http://localhost/behaviorservice/test1.htm就可以看到一個服務器上的時間了
而且是會動的,通過這種方法就可以實現頁面的局部刷新了
有兩點限制:
1.行為只能用域內的web服務,因為dhtml內置的安全限制造成的
2.通過的這種方式的訪問的類型會被限制,行為支持.net的基本類型和它們的數組
如:dataset,datatable得復雜類型就不支持了