注册 登录
编程论坛 ASP技术论坛

麻烦了,使用js+asp的无刷新导致仪器短暂无反应

boyfuture 发布于 2008-10-12 10:17, 2150 次点击
请教各位大侠,我采用js+asp方式无刷新页面,但是当传递数据的时候,电脑会突然没有反应,等数据传输完成的时候,电脑又恢复正常。代码如下,存在什么问题吗?

<script language="JavaScript">
function GetResult()
{
......
var strResult = unescape(oBao.responseText)
cont='strResult';
book.innerHTML=cont;
}
function MyShow()
{
//2秒自动刷新一次,2秒取得一次数据.
timer = window.setInterval("GetResult()",2000);
}
</script>

'''''
  <div id="book"> </div> 请大侠指教!怎么解决这个问题,谢谢!
21 回复
#2
hmhz2008-10-12 10:23
传递数据?有那么多数据传递嘛,一般传递数据是不会卡浏览器的,除非数据量超大,那样才会卡浏览器
#3
boyfuture2008-10-12 10:34
是这样的,我刚看到百度上有这个说法:
有人提出:
send之后别直接取responseText就可以咯
用类似<body onload>的东西
不过是别的
oXmlHttp.onreadystatechange = function(...)
是因为同步的原因,异步不会卡浏览器,这个该怎么修改呢?请指教,谢谢!
#4
boyfuture2008-10-12 10:56
顺便我问一下,如果断线联不到互联网,则弹出提示:
var cont=unescape(oBao.responseText)
if (cont=="")
        {window.status="无法连接到服务器,请检查网络连接是否正常";
        }
这样写可以吗?能不能实现这样的功能?谢谢
#5
multiple19022008-10-12 11:33
xmlhttp有属性用来判断成功不成功的
#6
yms1232008-10-12 11:41
timer = window.setInterval("GetResult()",2000);
将刷新间隔扩大试试看。
#7
multiple19022008-10-12 12:05
是什么仪器啊?
#8
boyfuture2008-10-12 12:25
不好意思,是浏览页无反应,电脑似乎短暂的停滞,等数据处理完后就恢复了,但是我把属性由false 改为ture 运行的时候就说错误,请问怎么才能实现异步呢?我使用的时间13000啊,应该不是时间的问题啊。
#9
hmhz2008-10-12 12:31
oXmlHttp.onreadystatechange=function(){
if(oXmlHttp.readyState==4 && oXmlHttp.status==404){alert("读取页面失败");return false;}
if(oXmlHttp.readyState==4 && oXmlHttp.status==500){alert("程序执行错误");return false;}
if(oXmlHttp.readyState==4 && oXmlHttp.status==200){book.innerHTML=oXmlHttp.responseText;}
}

[[it] 本帖最后由 hmhz 于 2008-10-12 12:33 编辑 [/it]]
#10
boyfuture2008-10-12 12:34
各位老大辛苦了:我看百度上搜的结果说是同步的原因,但是我改成这样的异步的代码,但是运行老错误,请帮我看看问题在哪,谢谢!
function cxhr()
{
    if (window.ActiveXObject)
    {
        xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");        
    }
    else if (window.XMLHttpRequest)
    {
        xmlHttp=new XMLHttpRequest();        
    }    
}

    var url="onlineserver.asp";
    xmlHttp.open("POST",url,true);
    xmlHttp.onreadystatechange=hsc;
    xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");
    xmlHttp.send(null);
}
function hsc()
{     var cont=unescape(xmlHttp.responseText)
            book.innerHTML=cont;
  }


function MyShow()
{
hsc();
//2秒自动刷新一次,2秒取得一次数据.
timer = window.setInterval("cxhr()",13000);
}
</script>。。。。onload="myshow()"                谢谢各位!
#11
multiple19022008-10-12 12:38
给onreadystatechange赋了程序了就不要在别的地方调用hsc了,因为那样responseText会出错。
#12
hmhz2008-10-12 12:43
程序代码:

<script>
onload=function(){cxhr();setInterval("cxhr()",2000);}
function XMLHttps(){
var ret=null;
try {ret=new ActiveXObject("Msxml2.XMLHTTP")}
catch(e){try {ret=new ActiveXObject("Microsoft.XMLHTTP")}catch(ee){ret=null;}}
if(!ret&&typeof XMLHttpRequest !="undefined"){ret=new XMLHttpRequest();}
return ret;
}

function cxhr(){
    var xmlHttp=XMLHttps();
    xmlHttp.open("GET","onlineserver.asp",false);
    xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    xmlHttp.onreadystatechange=function(){
     if(xmlHttp.readyState==4 && xmlHttp.status==404){alert("读取页面失败");return false;}
     if(xmlHttp.readyState==4 && xmlHttp.status==500){alert("程序执行错误");return false;}
     if(xmlHttp.readyState==4 && xmlHttp.status==200){book.innerHTML=xmlHttp.responseText;}}
    xmlHttp.send(null);  
}
</script>
#13
boyfuture2008-10-12 12:50
[bo][un]hmhz[/un] 在 2008-10-12 12:31 的发言:[/bo]

oXmlHttp.onreadystatechange=function(){
if(oXmlHttp.readyState==4 && oXmlHttp.status==404){alert("读取页面失败");return false;}
if(oXmlHttp.readyState==4 && oXmlHttp.status==500){alert("程序执行错误 ...

请问,如果我只是想在状态栏显示,服务器连接失败,请检查网络连线该”该怎么写?而且放在什么地方?谢谢了!
#14
boyfuture2008-10-12 12:54
谢谢大家的指点,非常感谢,我去调试一下,请问刚才提到浏览页刷无刷新更新数据后的浏览器活动停止,更新后恢复正常是什么原因?属性为false同步的时候的问题吗?
#15
hmhz2008-10-12 12:55
if(xmlHttp.readyState==4 && xmlHttp.status==404){status="读取页面失败";return false;}
if(xmlHttp.readyState==4 && xmlHttp.status==500){status="程序执行错误";return false;}
#16
multiple19022008-10-12 13:12
[bo][un]boyfuture[/un] 在 2008-10-12 12:54 的发言:[/bo]

谢谢大家的指点,非常感谢,我去调试一下,请问刚才提到浏览页刷无刷新更新数据后的浏览器活动停止,更新后恢复正常是什么原因?属性为false同步的时候的问题吗?

那个假死是因为你用的是异步获取数据,就是说现在仅仅是获取数据,浏览器不响应外界操作——————————一直到获取到数据
不仅仅是网页上这么操作,就算是写程序弄别的,或者说你组织活动,原理也是一样的:你卡死在了一件事上,自然不会处理其他事务。
#17
boyfuture2008-10-12 13:57
“我看到代码是:oXMLHttp.open('GET',   xmlhttpurl,   false);  
   
  呵呵,false表明使用的是同步方式,而不是异步  
   
  True是异步方式”
我刚开始用的就是false同步,现在我想改为异步,说这样就不会卡,我也不知道怎么回事,但是改为ture就提示错误,就上来问问。看看大家怎么考虑这个问题的。你们说QQ是不是也是这个技术啊?为什么不会卡?但是我这个在网络上用起来特别明显,本地还不是太严重。。。就跟死机了似的,当时啥反应都没有

[[it] 本帖最后由 boyfuture 于 2008-10-12 13:59 编辑 [/it]]
#18
boyfuture2008-10-12 14:41
[bo][un]hmhz[/un] 在 2008-10-12 12:43 的发言:[/bo]
onload=function(){cxhr();setInterval("cxhr()",2000);}
function XMLHttps(){
var ret=null;
try {ret=new ActiveXObject("Msxml2.XMLHTTP")}
catch(e){try {ret=new ActiveXObject("Microsoft.XMLHTTP")} ...

老大,运行后提示错误啊。。。。
#19
hmhz2008-10-12 14:49
把你 body 中的 onload 删了,因为我上面的js中已经使用了onload
#20
hmhz2008-10-12 14:53
把xmlHttp.open("GET","onlineserver.asp",false);中的 false 改成 true 就不卡了
#21
boyfuture2008-10-12 16:15
[bo][un]hmhz[/un] 在 2008-10-12 12:55 的发言:[/bo]

if(xmlHttp.readyState==4 && xmlHttp.status==404){status="读取页面失败";return false;}
if(xmlHttp.readyState==4 && xmlHttp.status==500){status="程序执行错误";return false;}

请问,当网线断线,服务器无法连接的时候,是显示读取页面失败吗?或出现这种情况,状态栏能显示“网络连接问题,请检查网络连接”这样的语句吗?该怎么写啊?


其他问题基本解决,非常感谢,但是这个问题依然存在,是什么原因?请指教,谢谢!
#22
boyfuture2008-10-13 15:04
我测试了当服务器或网线无法连接的时候,是无法进行页面的更新,而且也不会弹出任何错误,那么他xmlhttp有没有给出当响应时间过长,给出反馈信息呢?
1