当前位置:编程学习 > C#/ASP.NET >>

如何在前台获取后台定时传送的数据

后台定义一个string[],这个数据每隔一个小时更新一次,前台是<%=string[10] %>这样接受的,现在想让前台定时更新后台string[]的数据,但是不刷新前台的页面,请问这样如何使用?AJAX么?请高手简单示例一下。 --------------------编程问答-------------------- 前台设置个定时执行的js方法,通过ajax取得后台更新后的数据,然后更新前台的数据. --------------------编程问答-------------------- ajax如何获得后台指定的数据? --------------------编程问答-------------------- 首先必须确认,你后台的string[]是静态的么?不是静态的根本无法保存的
如果是静态,就可以做了,用System.Timers.Timer类申明一个计时器(要在Global.asax.cs文件中申明,这是全局应用程序类,只有这个才不会被销毁):
在Global类申明成员:
System.Timers.Timer timer1 = new System.Timers.Timer();
在Application_Start事件中添加代码:
timer1.Interval = 1800 * 1000;//时间间隔半小时
timer1.Elapsed += timer1_Tick;//触发函数
timer1.Start();//计时开始
然后在timer_Tick中写更新代码就可以了
这个定时器是系统定时器不依赖界面,前面那些说的什么在js中声明定时器,全是胡说八道,别人把页面关了就没用了 --------------------编程问答-------------------- 楼上说的是后台定时更新数据,这个我知道怎么做,我网站做得少,就是想知道后台更新的数据如何传递到前台,并且前台不需要刷新就可以接收到并且显示。谢谢楼上两位了 --------------------编程问答-------------------- 聊天室的功能类似吧.
定时读取显示.
--------------------编程问答-------------------- 我就贴AjAx请求数据的代码:
前台代码(自己写一个按钮调用函数):
function clickEvent()
{
var str="AJAX";//要往后台发送的字符串,可以传第你的请求参数
var xmlhttp;
if (window.XMLHttpRequest)// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
else
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.onreadystatechange=function()
{
  if (xmlhttp.readyState==4 && xmlhttp.status==200)//表示提交已完成
  {
  alert(xmlhttp.responseText);//弹出从后台传递过来的值
  }
}
xmlhttp.open("post","other.aspx?str="+str+"&type=code",true);//str为传递的字符串,type为设置的标志
xmlhttp.send();
}
后台代码:
protected void Page_Load(object sender, EventArgs e)
  {
  if (Request.QueryString["type"] == "code")//根据在url中设置的标志判断是否是匹配的回传
  {
  string theString = Request.QueryString["str"];//theString即获取到的字符串,即前台上传的
  string codes="1,2,3,4,5";//要写往前台的字符串,你可以调自己的方法获取
  Response.Write(codes);//将获取到的字符串再写往客服端
  Response.End();
  }
--------------------编程问答-------------------- 我发的帖子,第一次总是出不来呢? --------------------编程问答-------------------- 可以考虑使用Ajax 扩展里里的 Timer控件,页面看不出刷新来

--------------------编程问答-------------------- 就用javascript写个定时器,每隔多长时间,调用一次ajax方法,保证页面不会刷新的。 --------------------编程问答-------------------- 前台js定时器:
var timer1=setInterval(function(){},60000);//参数为触发函数与间隔时间 --------------------编程问答-------------------- --------------------编程问答-------------------- public partial class index : System.Web.UI.Page
{
    public string[] strWeibo = new string[15];
    public string reWeibo = "";
    public System.Timers.Timer tm1; 

    
    protected void Page_Load(object sender, EventArgs e)
    {
        

        if (!IsPostBack)
        {
            tm1 = new System.Timers.Timer(20000);
            tm1.Elapsed += new ElapsedEventHandler(geisinaweibo);
            tm1.Start();
            //geisinaweibo();

            if (Request.QueryString["type"] == "code")//根据在url中设置的标志判断是否是匹配的回传
            {
                string theString = Request.QueryString["str"];//theString即获取到的字符串,即前台上传的

                Response.Write(reWeibo);//将获取到的字符串再写往客服端
                Response.End();
            }


reWeibo在函数geisinaweibo中赋值,但是在Response.Write(reWeibo)中reWeibo一直是空,进入到geisinaweibo看到reWeibo是有值的,请问我该怎么改? --------------------编程问答-------------------- 高手帮一下吧,这个事向前台传值的过程,geisinaweibo()每隔30秒重新获取reWeibo的值,前台的js代码如下:
<script type="text/javascript">

        clickEvent();
        function clickEvent() {

            var strs = new Array();
            var str = "AJAX";
            var xmlhttp;
            if (window.XMLHttpRequest)
                xmlhttp = new XMLHttpRequest();
            else
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            xmlhttp.open("GET", "index.aspx?str=" + str + "&type=code", true);
            xmlhttp.send();
           
            xmlhttp.onreadystatechange = function () {
                if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                    //alert(xmlhttp.responseText);
                    strs = xmlhttp.responseText.split("+");
                    //                    for (i = 0; i < strs.length; i++) {
                    //                        alert(strs[i]);
                    //                    }
                    
                    document.getElementById('a0').innerHTML = strs[0];
                    document.getElementById('a1').innerHTML = strs[1];
                    document.getElementById('a2').innerHTML = strs[2];
                    document.getElementById('a3').innerHTML = strs[3];
                    document.getElementById('a4').innerHTML = strs[4];
                    document.getElementById('a5').innerHTML = strs[5];
                    document.getElementById('a6').innerHTML = strs[6];
                    document.getElementById('a7').innerHTML = strs[7];
                    document.getElementById('a8').innerHTML = strs[8];
                    document.getElementById('a9').innerHTML = strs[9];
                    document.getElementById('a10').innerHTML = strs[10];
                }
            }
           
            $tt = setTimeout("clickEvent()", 30000);
        }



    </script> --------------------编程问答-------------------- 大家看看帮下好么? --------------------编程问答-------------------- 定时器+ajax --------------------编程问答-------------------- 首先,不看好你这个定时器,页面对象的生存期很短的,只有在前后台数据交互时才存在,你这个定时器会随着页面对象生灭,根本没办法一直运行;
还有根据你的帖子,数据是保存在一个string[]中,必须确认这个string[]是静态的,不然也没有办法保存数据
请参考我前面的回答 --------------------编程问答-------------------- 不太会,学习中 --------------------编程问答--------------------
引用 10 楼  的回复:
前台js定时器:
var timer1=setInterval(function(){},60000);//参数为触发函数与间隔时间

这个加哪啊 --------------------编程问答-------------------- Javascript SetInternal方法定时向服务端发起Ajax请求 =。=
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,