js定时器断线重连,

小爪001 2013-07-26 10:02:49
我通过ajax请求action,action返回信息停止定时器,可是断网重连后定时器会弹出好几次信息才停止
function getAlertMessage() {
var url = $("#alertMaessage").val();
$.post(url, {}, function(data) {
var loggerinfo = data.split("_");
if (loggerinfo[1] == "success") {
alert("导入成功");
clearInterval(alertTimer);

} else if (loggerinfo[1] == "fail") {
alert("导入失败");
clearInterval(alertTimer);
}
});
}
...全文
238 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
小爪001 2013-08-09
  • 打赏
  • 举报
回复
引用 7 楼 showbo 的回复:
表单是直接提交后刷新页面还是使用了其他无刷新提交插件来做? 如果是提交表单后,页面就卸载了,不会执行定时器代码。。 如果是无刷新,用firefox的firebug或者chrome监视下一共发送了多少个xhr请求
form也是无刷新提交的,不知道为什么这个问题死活不出现了.虽然没有解决但是也谢谢你!
Go 旅城通票 2013-07-26
  • 打赏
  • 举报
回复
用setTimeout,不要用setInterval,要不到指定的时间就会重复执行
加油馒头 2013-07-26
  • 打赏
  • 举报
回复
楼上正解 可能有延时。
Go 旅城通票 2013-07-26
  • 打赏
  • 举报
回复
表单是直接提交后刷新页面还是使用了其他无刷新提交插件来做? 如果是提交表单后,页面就卸载了,不会执行定时器代码。。 如果是无刷新,用firefox的firebug或者chrome监视下一共发送了多少个xhr请求
小爪001 2013-07-26
  • 打赏
  • 举报
回复
引用 5 楼 cao13935193800 的回复:
[quote=引用 4 楼 showbo 的回复:] setTimeout你可以在回调里面重启 setInteval如果ajax网速慢还没有返回就会又启动一次ajax,只有成功返回一次后才停掉计时器,谁知道第一次返回中到底启动过了几次计时器。。你的setInterval间隔也没说,
好的,那我试试去![/quote] 不太对啊 function submitParForm() { $("#importParForm").submit(); alertTimer = setInterval("getAlertMessage()", "2000"); } 我是在提交这个form后在开启定时器调用这个getAlertMessage方法ajax回调后,判断结果再停止定时器,可能是我没说清楚问题!
小爪001 2013-07-26
  • 打赏
  • 举报
回复
引用 4 楼 showbo 的回复:
setTimeout你可以在回调里面重启 setInteval如果ajax网速慢还没有返回就会又启动一次ajax,只有成功返回一次后才停掉计时器,谁知道第一次返回中到底启动过了几次计时器。。你的setInterval间隔也没说,
好的,那我试试去!
Go 旅城通票 2013-07-26
  • 打赏
  • 举报
回复
setTimeout你可以在回调里面重启 setInteval如果ajax网速慢还没有返回就会又启动一次ajax,只有成功返回一次后才停掉计时器,谁知道第一次返回中到底启动过了几次计时器。。你的setInterval间隔也没说,
小爪001 2013-07-26
  • 打赏
  • 举报
回复
引用 1 楼 showbo 的回复:
用setTimeout,不要用setInterval,要不到指定的时间就会重复执行
您仔细看代码了么?我这是肯定是多次执行这个ajax请求,根据后台传回的信息判断后才停止,用setTimeOut行么?
小爪001 2013-07-26
  • 打赏
  • 举报
回复
您仔细看代码了么?我这是肯定是多次执行这个ajax请求,根据后台传回的信息才停止,这setTimeout时间设置什么?
Web服务完整实例构建Web通道(Web服务端) 简单、规范、易学、易用 曾经,对于上世纪八十年代就从事软件开发的笔者而言,写出自己的Web服务器(Web服务端、Web数据通道)及BS软件,是那么的遥不可及!是个难以实现的梦! 而今,看到在电脑及手机浏览器上运行的自己写出的网页程序,感慨万千。高兴之余,写成此文,与网友共享、共勉,抛砖引玉。 开发工具,HTML+JS+FlashSocket插件构成前台网页开发,中间数据通道采用笔者开发的Web服务端(利用Socket tcp/ip协议数据通讯,数据流符合规范即可),后台数据解析程序(示例)采用vfp9开发。 Socket直译为“插座、插口”,计算机书籍中多译为“套接字”,笔者认为应该理解为“电话总机及电话线路”可能更接近实际情况,socket长连接 相当于电话接通后一直保持连通状态(不论是否有语音通话),socket短连接 相当于电话接通后即语言通话(连接),否则随即断线,以便让出线路供他人使用。更多不做解释,网友可网上百度。 思路比较简单,前台通过HTML录入界面获取数据,然后组合成符合Web服务端要求的字符串(操作指令串),存入JS本地变量(各网页间的公用变量)中,FlashSocket网页采用JS定时器获取操作指令串,通过上述web服务端传输至后台,再将指令串传送给后台解析程序执行操作指令,完成操作后结果回送到前台,前台其他程序即可使用该变量。即: 1.前台页面录入数据==> 2.确认(或提交)后形成操作指令串存入本地变量供FlashSocket调用==> 3.FlashSocket将指令串传送给指定IP地址的指定端口(Web服务端的IP地址及端口)==> 4.Web服务端获取指令串==> 5.Web服务端调用后台解析程序==> 6.解析程序依据指令串进行操作、结果(字符串)回送给Web服务端==> 7.Web服务端获取结果串==> 8.Web服务端将结果字符串回送给前台FlashSocket所在的IP地址及端口==> 9.FlashSocket将结果串存入本地变量==> 10.前台页面程序调用本地变量(结果串)…… 读者可能注意到,上述各步骤除了4、7二步骤外,其余各步骤都在软件开发者的开发范围内,也就是说,只要传输的指令串及结果串符合Web服务端的收发规则,开发者再也不必操心前后台的数据传输问题了(前后台环境及开发工具完全由开发者自己说了算,可用自己熟悉的环境及语言,学习压力小),从而扫平了很多人进入BS世界的一大障碍。 实际上,上述过程类似于网上购物,消费者不需要关心商品货物的配送,只需要网上下单及等待收货即可,而Web服务端则相当于物流公司。 由于笔者接触HTML+JS时间不长,水平、经验有限,所写的示例浅白易懂,只要是搞过软件设计的人,肯定都能看懂。示例只是一个示范,还存有很多缺陷,如:口令没有加密、输入页面没有美化、网页之间调用没有安全机制……等等,正如前文所言,笔者抛砖,网友引玉,有待大家完善! 笔者目前取得的小小成绩,得益于很多前辈的书籍、资料或授课,其中有: 张洪举老师,他的多本书籍使笔者受益匪浅、获感良多; 加菲猫老师(抱歉!只知道网名,但如雷贯耳!),他在网上的BS开发授课中,为笔者打开了HTML+JS开发之门,看到了另一个世界; FlashSocket的提供者enjoy_lhl,为示例中FlashSocket网页的形成提供了基础资料; getUTF8StrLeng函数的提供者junjie,为该函数的形成提供了基础资料; formatData2函数的提供者jontyy,为该函数的形成提供了基础资料; 还有网上随时查找的一些资料,不能一一说出出处,还望作者(或提供者)海涵…… 为此,笔者对上述老师、网友们致以衷心的感谢! 本文所提供的资料中,有详细的安装、使用方法(其中也有Web服务端的收发规则),可参考、试用、交流。 由于笔者水平有限,疏漏之处难免,望网友指正,以便大家共同提高! QQ:527800911、微信:13947680916 2019.6.27

87,901

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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