关于用AJAX技术使页面定时刷新?在线等~~~
我用的是VS2003,C#,WEB程序。现在我要我的页面每隔10秒刷新一次,但是又不想让用户感觉到刷新效果,所以希望用AJAX技术实现刷新,希望高手指教,有实例更好。谢谢!!! --------------------编程问答-------------------- up --------------------编程问答-------------------- js : winpopup --------------------编程问答-------------------- function createXMLHttpRequest(){
var g_xhRequest=null;
try
{
g_xhRequest= new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
g_xhRequest=null;
}
if(g_xhRequest==null)
{
try
{
g_xhRequest=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e)
{
g_xhRequest=null;
}
if(g_xhRequest==null)
{
try
{
g_xhRequest= new XMLHttpRequest();
}
catch(e)
{
g_xhRequest= null;
}
}
}
return g_xhRequest;
}
function SendRequest(url,callback)
{
var g_xhRequest=null;
g_xhRequest=createXMLHttpRequest();
if(g_xhRequest!=null&&(g_xhRequest.readyState!=0&&g_xhRequest.readyState!=4))
{
g_xhRequest.abort();
}
g_xhRequest=createXMLHttpRequest();
if(g_xhRequest==null)
{
window.status="Global: XMLHttpRequest not supported";
}
try
{
g_xhRequest.onreadystatechange=createFunction(null,"updatePage",callback,g_xhRequest);
g_xhRequest.open("GET",url,true);
g_xhRequest.send(null);
}catch(e)
{
window.status="Global: XMLHttpRequest Send Error:["+e+"]";
}
}
function updatePage(callback,g_xhRequest)
{
if(g_xhRequest.readyState == 4)
{
if(g_xhRequest.status == 200)
{
callback(g_xhRequest.responseText);
}
else if (g_xhRequest.status == 404)
{
window.status="File lost!";
}
else if (g_xhRequest.status == 500)
{
window.status="server Error!";
}
else
{
window.status="Error: status code is " + g_xhRequest.status;
}
}
}
//========================通讯框架==============================
//========================消息框架==============================
//将有参数的函数封装为无参数的函数
function createFunction(obj,strFunc)
{
var args=[]; //定义args用于存储传递给事件处理程序的参数
if(!obj)obj=window; //如果是全局函数则obj=window;
//得到传递给事件处理程序的参数
for(var i=2;i<arguments.length;i++)args.push(arguments[i]);
//用无参数函数封装事件处理程序的调用
return function(){ obj[strFunc].apply(obj,args);}//将参数传递给指定的事件处理程序
}
//========================消息框架================== --------------------编程问答-------------------- setTimeout();
==================================
小小姑娘
清早起床
提着裤子上茅房
茅房有人,没有办法
只好拉在裤子上..................
QQ:18163708;765835
MSN:yoursunboy@msn.com
Gtalk:yoursunboy@gmail.com
================================== --------------------编程问答-------------------- 问题解决不了 --------------------编程问答-------------------- var xmlhttp = false;
function initajax(){
if(!xmlhttp){
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.open("GET","***",true);
xmlhttp.onreadystatechange=getresult;
}
xmlhttp.send(null);
}
}
function getresult(){
setInterval("initajax()",2000);
} --------------------编程问答-------------------- 可惜你用的是vs2003,如果是2005的话用异步回调实现很容易,我这有现成的例子.既然是2003那就只能用ajax了,不过也不是很麻烦,对了,你是页面刷新还是局部刷新?将绑定数据的js方法重复执行就可以了,如下:
function <%#this.ClientID%>_CallBack(){
<%# Page.ClientScript.GetCallbackEventReference( this, "", this.ClientID + "_GetResult", "")%>;
}
function <%#this.ClientID%>_GetResult(result){
if(result!="")
{
document.getElementById("TestSession1").innerHTML+=result;
document.getElementById("TestSession1").scrollTop +=99999999;
}
}
i=window.setInterval("<%#this.ClientID%>_CallBack()",100000); //隔10秒执行一次 --------------------编程问答-------------------- 我的是整个页面都要刷新 --------------------编程问答-------------------- up --------------------编程问答-------------------- 没有人指教吗? --------------------编程问答-------------------- 要是后台偷着刷也可以做成线程在后面跑 --------------------编程问答-------------------- magicajax,直接用就可以,网上很多 --------------------编程问答-------------------- magicajax只是刷新它里面的控件,我要的是整个页面的刷新 --------------------编程问答-------------------- magicajax只是刷新它里面的控件,我要的是整个页面的刷新
------------------------------------------------------
你把<body>里的代码全放在magicajax中不就行啦 --------------------编程问答-------------------- 刷新整个页面的话,楼上的应该可行... --------------------编程问答-------------------- 就没有人帮帮我吗?我的问题还是解决不了啊,希望有高手帮帮我,谢谢了 --------------------编程问答-------------------- 添加magicajax.dll
配置:
<httpModules>
<add name="MagicAjax" type="MagicAjax.MagicAjaxModule, MagicAjax" />
</httpModules>
页面添加:
<%@ Register TagPrefix="ajax" Namespace="MagicAjax.UI.Controls" Assembly="MagicAjax" %>并且添加到工具箱
将你要刷新的部分放在<ajax:AjaxPanel id="AjaxPanel1" runat="server">
]65464464646
</ajax:AjaxPanel>里面
在后台设置刷新间隔时间:
if (!IsPostBack)
{
//每1秒刷新
MagicAjax.AjaxCallHelper.SetAjaxCallTimerInterval(1000);
}
--------------------编程问答-------------------- ustbwuyi() :
呵呵,你说的这个我也知道,但是我的页面上的控件是在后台程序创建的,根据从数据库中提取的坐标,来定位控件在页面上的位置。所以我希望刷新页面的时候,刷新控件的内容。用MagicAjax实现不了 --------------------编程问答-------------------- 希望高手能帮我 --------------------编程问答-------------------- setInterval --------------------编程问答-------------------- setInterval/setTimeout() --------------------编程问答-------------------- kaiyao() ( ) 信誉:100 Blog 2007-02-07 15:18:28 得分: 0
ustbwuyi() :
呵呵,你说的这个我也知道,但是我的页面上的控件是在后台程序创建的,根据从数据库中提取的坐标,来定位控件在页面上的位置。所以我希望刷新页面的时候,刷新控件的内容。用MagicAjax实现不了
晕......那就有点头疼了...貌似不太好处理..我想想. --------------------编程问答-------------------- 做成SVG图象就可以了 --------------------编程问答-------------------- up --------------------编程问答-------------------- 学习 --------------------编程问答-------------------- 定时器 --------------------编程问答-------------------- 使用UpdatePanel加Timer --------------------编程问答-------------------- 既要刷新还不能让用户看出刷新效果对吧? --------------------编程问答-------------------- 关注,帮顶。 --------------------编程问答-------------------- 关注,帮顶。 --------------------编程问答-------------------- 1.添加scriptmanager
2.添加UpdatePanel
3.添加按钮,留<ContentTemplate></ContentTemplate>
4.再最下面添加 timer --------------------编程问答-------------------- <asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div >
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Timer ID="Timer1" runat="server" Interval="2000" ontick="Timer1_Tick">
</asp:Timer>
</ContentTemplate>
</asp:UpdatePanel>
</div>[/align] --------------------编程问答-------------------- webform?默认请求页面上的时候,返回的是整个画面的html,然后用js把获取的html的body替换掉现在body中的内容。
但是不理解这是个什么需求,居然要刷新整个画面
补充:.NET技术 , ASP.NET