ajax超时问题

q_zhongqin 2009-10-23 02:30:01
var xmlHttp = null;
function Getxmlhttp()
{
var url = "update.php";

if (xmlHttp == null)
{
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null)
{
alert ("您的浏览器不支持AJAX!请升级浏览器版本!");
return;
}

}
//alert("Object Build Ok");
xmlHttp.onreadystatechange = xmlstatechange;
xmlHttp.open("GET",url,true);
xmlHttp.send();

window.setTimeout("Getxmlhttp()",5000);
}

我在Getxmlhttp中设置了定时5秒执行一次getxmlhttp,update.php里对数据库进行操作,生成表格实现自动刷新的功能
程序能够运行,而且也能够实现自动刷新,但是不知道为什么运行一段时间之后就不能正常的获取到update.php里面的数据了。不知道大家有没有遇到过这种情况?
...全文
219 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
q_zhongqin 2009-10-25
  • 打赏
  • 举报
回复
xmlHttp.send(); //改为:xmlHttp.send(null);
是这个原因
床上等您 2009-10-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ruanchao 的回复:]
    window对象有两个主要的定时方法,分别是setTimeout 和 setInteval 他们的语法基本上相同,但是完成的功能取有区别。

  setTimeout方法是定时程序,也就是在什么时间以后干什么。干完了就拉倒。

  setInterval方法则是表示间隔一定时间反复执行某操作。
====
请注意这两个定时函数的用法。
[/Quote]没注意!
ruanchao 2009-10-23
  • 打赏
  • 举报
回复
window对象有两个主要的定时方法,分别是setTimeout 和 setInteval 他们的语法基本上相同,但是完成的功能取有区别。

  setTimeout方法是定时程序,也就是在什么时间以后干什么。干完了就拉倒。

  setInterval方法则是表示间隔一定时间反复执行某操作。
====
请注意这两个定时函数的用法。
床上等您 2009-10-23
  • 打赏
  • 举报
回复
你的发送请求不一定会成功,最好做个判断吧。让请求成功返回再执行

我的能行,不过现在不用了,都用 jquery 了。
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null)
{
alert ("您的浏览器不支持AJAX!");
return;
}
var url="delevisa.asp?sid="+Math.random()+"&vid="+vid;
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}
}
function stateChanged()
{
if(xmlHttp.readyState==4)
{
temp=xmlHttp.responseText;
alert (temp);
window.location.reload();
}
床上等您 2009-10-23
  • 打赏
  • 举报
回复
var xmlHttp = null;
function Getxmlhttp()
{
var url = "update.php";

if (xmlHttp == null)
{
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null)
{
alert ("您的浏览器不支持AJAX!请升级浏览器版本!");
return;
}

}
//alert("Object Build Ok");
xmlHttp.onreadystatechange = xmlstatechange;
xmlHttp.open("GET",url,true);
xmlHttp.send(); //改为:xmlHttp.send(null);

window.setTimeout("Getxmlhttp()",5000);
}
q_zhongqin 2009-10-23
  • 打赏
  • 举报
回复
试了一下,好象不是这个缓存的问题,因为我在js代码里有一直alert(xmlhttp.responestext)
显示了一段时间就不显示了.感觉好象是程序在哪里死掉了
床上等您 2009-10-23
  • 打赏
  • 举报
回复
你每一次提交的地址都是同一地址
比如你第一次提交 a.asp
而你希望asp 输出 aaa 值,asp输出了 aaa 的值,也是对的。
你第二次提交到 a.asp
而你希望 asp输出 bbb 值,但asp可能还是输出 aaa 值,最好方法就是地址后加上一个不同的变量,但得每次提交地址一样,但url不同。以防缓存。
q_zhongqin 2009-10-23
  • 打赏
  • 举报
回复
加入时间是指超时的时间吗?防缓存是什么一个概念?多谢
床上等您 2009-10-23
  • 打赏
  • 举报
回复
防缓存吧。。。。
var url = "update.php?sid"+Math.random();
或者加入时间
eimhee 2009-10-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ruanchao 的回复:]
window对象有两个主要的定时方法,分别是setTimeout 和 setInteval 他们的语法基本上相同,但是完成的功能取有区别。

  setTimeout方法是定时程序,也就是在什么时间以后干什么。干完了就拉倒。

  setInterval方法则是表示间隔一定时间反复执行某操作。
====
请注意这两个定时函数的用法。
[/Quote]学习

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧