这是我的无刷新代码,在sms_getmsg.asp里面,我需要得到用户的消息条数,如果大于0,那么就希望弹出一个窗口. 大家帮帮忙吧,谢谢了<script language="vbScript"> Function bytes2BSTR(vIn) Dim strReturn,i,ThisCharCode,innerCode,Hight8,Low8,NextCharCode strReturn = ""
For i = 1 To LenB(vIn) ThisCharCode = AscB(MidB(vIn,i,1)) If ThisCharCode < &H80 Then strReturn = strReturn & Chr(ThisCharCode) Else NextCharCode = AscB(MidB(vIn,i+1,1)) strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) i = i + 1 End If Next
bytes2BSTR = strReturn End Function </script><script language="JavaScript"> function getXML(URL) { var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); xmlhttp.Open("GET",URL, false); try { xmlhttp.Send(); var result = xmlhttp.status; } catch(e) { return(false); } if(result==200) { return(bytes2BSTR(xmlhttp.responseBody)); } var xmlhttp = null; } function sms_update() { newsms.innerHTML = getXML('sms_getmsg.asp'+'?rd='+Math.random()); //这里放你的显示数据库的页面的地址 //window.setInterval("sms_update()",20000) } window.setInterval("sms_update()",20000) </script> <div id=newsms>数据加载中,请稍候····</div> <script language=javascript> <!-- sms_update(); --> </script>
if (returninfo!="")//表示有值
{
window.open("","","")//打开窗口
}
//是这个意思吗?
{
divId.innerText = "ok"
window.open()
}
{
divId.innerText = "ok"
window.open()
}
if(XMLHTTP.responseText!="")
{
divId.innerText = "ok"
window.open()
}
Function bytes2BSTR(vIn)
Dim strReturn,i,ThisCharCode,innerCode,Hight8,Low8,NextCharCode
strReturn = ""
For i = 1 To LenB(vIn)
ThisCharCode = AscB(MidB(vIn,i,1))
If ThisCharCode < &H80 Then
strReturn = strReturn & Chr(ThisCharCode)
Else
NextCharCode = AscB(MidB(vIn,i+1,1))
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
i = i + 1
End If
Next
bytes2BSTR = strReturn
End Function
</script><script language="JavaScript">
function getXML(URL) {
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.Open("GET",URL, false);
try {
xmlhttp.Send();
var result = xmlhttp.status;
}
catch(e) {
return(false);
}
if(result==200) {
return(bytes2BSTR(xmlhttp.responseBody));
}
var xmlhttp = null;
}
function sms_update()
{
newsms.innerHTML = getXML('sms_getmsg.asp'+'?rd='+Math.random()); //这里放你的显示数据库的页面的地址
//window.setInterval("sms_update()",20000)
}
window.setInterval("sms_update()",20000)
</script>
<div id=newsms>数据加载中,请稍候····</div>
<script language=javascript>
<!--
sms_update();
-->
</script>
把得到的东西(一个变量)赋给 eval() 执行,
当然返回过来的字符传要是一些脚本, 比如说 document.write("...");之类的
那样就可以实现你的问题了提示:XMLHTTP 需要客户端安装组件,
建议使用 Download Behavior,IE 5就能支持
在刷新页面中再response.write一个弹出窗口的脚本。
不过不知道对服务器的资源占用情况。
仅供参考
我已经在上面把我的代码帖出来,你的关于弹出窗口的方法可能不行哟
每隔3秒刷新一次
通过"gotMsg"的value来判断是否要弹出窗口,
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta http-equiv="refresh" content="3">
<title></title>
<script language="javascript">
function loadit()
{
if (document.all.gotMsg.value==1)
{
window.open("test.asp","test","scrollbars=no,menubar=no,location=no,toolbar=no,resizable=no,status=no,titlebar=no,width=640,height=419,resizable=yes");
}
}</script>
</head>
<body onLoad="loadit()">
<input type="hidden" id="gotMsg" value="<%=1%>">
</body>
</html>
用来检测是否有值并弹出窗口,同时也可以在javascript里更新主页面上要更改的内容
var re=getXML('sms_getmsg.asp'+'?rd='+Math.random());
if(parseInt(re)>0)
{
newsms.innerHTML =re;
window.open(url,name,feather);
}
另外,你不是返回的是数字吗,为什么还用bytes2BSTR函数呢
xmlHttp.Open("GET",URL, false);
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4) {
XXX.innerHTML = ""
window.open();
}
}