前几天老板要求实现页面局步刷新的功能 在网上查了很久。 发现, 我们在做网页的局部动态刷新的功能的时候常用的方法,是iframe和 FrameSet ,不过这两种方法也有他的弊端。那就是页面的大小不好控制的问题。于是我想到了用javascript 中的 xmlhttp对象来动态的获取其他页面的信息作为本页面的一部分的方法。于是按照这个方法做了一个,效果还不错。下面把主要思路写下来 ,供大家参考!
我得思路是这样的,在主页面上编写一段javascript的小函数,执行的功能是利用xmlhttp对象根据所给的参数获得另一个页面中的数据页面,然后动态的显示在主页面中。看上去好像是没有什么问题,但是在用户交互上就不是那么好控制,因为在主页面上显示的是纯的html的代码,但是子页面上的交互功能却不好实现了。于是我就想到了在子页面上来调用主页面的javascript代码,同时给他相应的参数。这样,既实现了动态局部刷新,又保证了子页面的用户交互性。
主要代码如下 :
在主页面中用这段javascript 代码获取子页面的代码
<script language=javascript>
var oDiv
var xh
function getPageDataFromUrl(url,div)
{
oDiv = div
oDiv.innerHTML = "正在加载数据,请稍侯......."
xh = new ActiveXObject("Microsoft.XMLHTTP")
xh.onreadystatechange = getReady
xh.open("POST",url,"false");
xh.send();
}
function getReady()
{
if(xh.readyState==4)
{
if(xh.status==200)
{
strTest = xh.responseText ;
re = /form/;
strTest=strTest.replace(re,"ggggg");
oDiv.innerHTML = strTest;
}
else
{
oDiv.innerHTML = "由于:" + xh.statusText+"数据加载失败";
}
}
}
</script>
<body onload='getPageDataFromUrl("PostClubIndexList.aspx",document.all.ListBox);>
然后,在自页面中用
<A class="a_hei00" href="#" onclick="parent.getPageDataFromUrl('<%#System.Web.HttpContext.Current.Request.CurrentExecutionFilePath + "?Page=1"%>',document.all.ListBox)">首页</A></TD>
的代码来回调主页面中的javascript函数,重新传给url连接 这样就实现了页面的客户端翻页的效果。