如何在前台获取后台定时传送的数据
后台定义一个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[]是静态的,不然也没有办法保存数据
请参考我前面的回答 --------------------编程问答-------------------- 不太会,学习中 --------------------编程问答--------------------
这个加哪啊 --------------------编程问答-------------------- Javascript SetInternal方法定时向服务端发起Ajax请求 =。=
补充:.NET技术 , ASP.NET