日期:2014-05-18  浏览次数:20402 次

开发时遇到的问题,关于刷新和实时提示的,新手请教了,大家多帮忙了~~
现在在做一个会议室预订系统,我在国企的一个软件部门,搞web开发的就我一个...所以遇到问题没人指点,只能劳烦大家了!
问题:我想要实现当用户预订了会议室以后,管理者的页面不需要刷新就能显示一个提示.我有两个想法:
想法1:我知道用ajax应该可以做,在管理者界面设一个带有gif图片的imagebutton.管理者界面定时向服务器发消息,服务器收到这个消息就查数据库看是否有新预订,如果有就告诉管理者界面,管理者界面就显示这个imagebutton.但是ajax我只看过基础的东东,不会弄,而且我不知道用ajax的时候怎么能让imagebutton实时的隐藏和显示.请大家给个解决方案吧,越详细越好,尤其是页面的javascript的代码.
想法2:我不太会用ajax,项目又比较急,我想用比较土的办法,干脆让管理者界面定时刷新,我就在管理者页面加了刷新代码如下:
<script language="javascript">  
  setTimeout("window.location.reload(true)",60000);
</script>
但是时间一到出现"不重新发送信息,则无法刷新网页 "的提示,我的页面有一个最原始的gridview(就是拖到页面没做任何修改),gridview的内容和数据源都是动态加载的.这个问题怎么产生的?怎么解决?

这里有两种方法,帮我解决一个就给分,给一个新的解决方案也行!我水平比较低,学.net没多久,请写得详细一点.本来要给200分的,但是系统不让我给....先谢谢大家了~

------解决方案--------------------
我想你用Ajax请求页面,应该会吧,那点就省略了,
在后台,你比如有个CheckHasMessage()这样的一个方法
public void CheckHasMessage()
{
 //检查是否有数据
bool flag = 是否有数据标志
Response.Write(flag);
Response.End();
}
比如你用CallBack来接受这个XmlRequest对象
那你需要在Js页面中,加一个函数
function CallBack(ob)
{
var flag = ob.responseText;
if(flag.toLowerCase() == "true")
{
document.getElementById('ImageButton的ClientID').style.display = "block";

}

主要是这样的一个流程,具体的你再相应的修改一下吧
------解决方案--------------------
setTimeout("frmRefresh.submit()",60000)
------解决方案--------------------

var xmlHttp,alerted;
function createXMLHttpRequest() 

try { 
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP") 
} catch (e) { 
try { 
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP") 
} catch (E) { 
alert("请安装Microsofts XML parsers") 


if (!xmlHttp && !alerted) { 
try { 
xmlHttp = new XMLHttpRequest(); 
} catch (e) { 
alert("你的浏览器不支持XMLHttpRequest对象,请升级"); 




function handleStateChange(){
var img = "<img src='images/loading.gif' >";
 
if(xmlHttp.readystate == 4)
{ //表示请求状态 4为完成
 
if(xmlHttp.status == 200){ //http状态指示码,200表示ok
//将服务器返回信息作为文本插入到DIV容器中。
 
 
if(xmlHttp.responseText=="<font color='green' style='font-size:12px'>恭喜!此用户名可以使用</font>")
{
$('Button1').disabled="";
}
else if(xmlHttp.responseText=="<font color='red' style='font-size:12px'>已经存在该用户名</font>"){
$('Button1').disabled="disabled";
}
else if(xmlHttp.responseText=="<font color='red' style='font-size:12px'>不能为空</font>")
{
$('Button1').disabled="disabled";

}
 document.getElementById("data").innerHTML = xmlHttp.responseText; 
}
}
else 
{
document.getElementById("data").innerHTML = img;
}
//若响应未完成的话,则显示loading..
}

function showResult(){
var url = 'ajaxRequest/UserRegRequest.aspx?uName='+document.getElementById("TextBox1").value;
createXMLHttpRequest();
//请求状态改变事件触发handleStateChange功能
xmlHttp.onreadystatechange = handleStateChange; 
xmlHttp.open("GET",url); 
xmlHttp.send(null); 
}


这是我项目里 用户注册时判断用户名是否存在的ajax。 你可以改下,
你可以定时去调用函数
setTimeout("showResult(),"60000)
------解决方案--------------------
不定要ajax啊,隐藏的iframe也可以,只是浏览器会出现进度条

使用隐藏的iframe+