在浏览器中正常运行的setTimeout,到了微信公众号内不正常,请大神帮纠正代码或换一种方式执行

qq_783939100 2018-09-09 05:28:37
<script>
check_login();
function check_login() {
$.post("check_mge.php", {scene_id: "1",scene_id2:"2",timeset : "1536485088"}, function(data) {
if (data.msid != null) {
//alert("有数据");
location.href="mem.php";
} else {
setTimeout("check_login()", 5000);
}
}, "json");
}
</script>


每隔5秒请求一下数据,在所有浏览器中都能正确执行,但到了微信公众号内打开页面就不行,然后删除微信缓存又可以了,但过一段时间又不行。

请大神帮纠正代码或换其它JS计时器执行达到同样效果,谢谢!
...全文
1028 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
qlkj666 2018-09-12
  • 打赏
  • 举报
回复
谢谢大家的帮忙!
joewuuuu 2018-09-11
  • 打赏
  • 举报
回复
你在你的ajax完成之后 也就是在success里再调用一下 check_login()。
讨厌走开啦 2018-09-10
  • 打赏
  • 举报
回复
引用 8 楼 qq_42597818 的回复:
[quote=引用 7 楼 lqlqlq007 的回复:]
那你需要做的是弄明白为什么页面重新打开后定时器没有正常启动,check_login在页面重新打开时是不是出错了。


没有出错,等于微信内的浏览器死了,所以要清了缓存才能再有效,但一提交又不行了,应该要解决ajax提交造成的冲突才行,坐等高手啊[/quote]

“没有出错,等于微信内的浏览器死了”——你这个回答很笼统啊,微信开发者工具不是能看到控制台吗?打几个断点调试一下不行吗?
qq_783939100 2018-09-10
  • 打赏
  • 举报
回复
引用 7 楼 lqlqlq007 的回复:
那你需要做的是弄明白为什么页面重新打开后定时器没有正常启动,check_login在页面重新打开时是不是出错了。
没有出错,等于微信内的浏览器死了,所以要清了缓存才能再有效,但一提交又不行了,应该要解决ajax提交造成的冲突才行,坐等高手啊
讨厌走开啦 2018-09-10
  • 打赏
  • 举报
回复
引用 6 楼 qq_42597818 的回复:
[quote=引用 5 楼 lqlqlq007 的回复:]
是不是提交了以后页面发生了切换,导致定时器被销毁了(定时器所在的页面被销毁)?


没有销毁,当提交后,又重新打开了这个页面,那应该定时器又重新开始生效啦,但只要提交后,这个页面再就不起作用,除非清除微信缓存,然后再才可以,但只要再提交,又不行了。

后来把页面分开,把带有定时器的放到iframe中,一提交,还是一样。

最后把ajax改为form提交,问题解决了:
<form method="post" name="AddUserForm" action="mem.php">
<textarea name="reply" placeholder="点此回复消息" id="reply" type="text"></textarea>
<input type="button" class="weui-btn weui-btn_mini" value="发送">
</form>

但form提交会造成页面转跳,影响用户体验,唯有请大神出手啊,谢谢![/quote]

那你需要做的是弄明白为什么页面重新打开后定时器没有正常启动,check_login在页面重新打开时是不是出错了。
qq_783939100 2018-09-10
  • 打赏
  • 举报
回复
引用 5 楼 lqlqlq007 的回复:
是不是提交了以后页面发生了切换,导致定时器被销毁了(定时器所在的页面被销毁)?
没有销毁,当提交后,又重新打开了这个页面,那应该定时器又重新开始生效啦,但只要提交后,这个页面再就不起作用,除非清除微信缓存,然后再才可以,但只要再提交,又不行了。 后来把页面分开,把带有定时器的放到iframe中,一提交,还是一样。 最后把ajax改为form提交,问题解决了:
<form method="post" name="AddUserForm" action="mem.php">
      <textarea name="reply" placeholder="点此回复消息" id="reply" type="text"></textarea>
     <input type="button" class="weui-btn weui-btn_mini" value="发送">
   </form>
但form提交会造成页面转跳,影响用户体验,唯有请大神出手啊,谢谢!
讨厌走开啦 2018-09-10
  • 打赏
  • 举报
回复
引用 4 楼 qq_42597818 的回复:
[quote=引用 3 楼 lqlqlq007 的回复:]
尽量在用户发生请求的时候再检查用户的合法性,频繁请求微信的接口会有问题。


经过反复研究,发现这段代码与下面的代码有冲突,只要提交了表单,setTimeout就失效,不提交表单,setTimeout会一直正常执行

<script type="text/javascript">
function get(obj) {
if (document.getElementById("customer").value=="") {
alert('请选择联系人');
self.location='liaotianxinxi.php';
return;
}
if (document.getElementById("reply").value=="") {
alert('请输入要发送的消息');
return;
}
obj.disabled = true;
var customer = $("#customer").val();
var reply = $("#reply").val();
$.ajax({
url: "customer.php",
type: "Post",
data: "customer=" + customer + "&reply= "+ reply,
success: function(msg) {
obj.disabled = false;
$("#reply").val('');
alert('已发送\n'+s);

}
})
}
</script>
<textarea name="reply" placeholder="点此回复消息" id="reply" type="text"></textarea>
<input type="submit" value="发送" onClick="get(this)">


请高手帮看看怎么解决这个冲突,谢谢!

[/quote]

是不是提交了以后页面发生了切换,导致定时器被销毁了(定时器所在的页面被销毁)?
qq_783939100 2018-09-10
  • 打赏
  • 举报
回复
引用 3 楼 lqlqlq007 的回复:
尽量在用户发生请求的时候再检查用户的合法性,频繁请求微信的接口会有问题。
经过反复研究,发现这段代码与下面的代码有冲突,只要提交了表单,setTimeout就失效,不提交表单,setTimeout会一直正常执行
<script type="text/javascript">
function get(obj) {
    if (document.getElementById("customer").value=="") {
        alert('请选择联系人');
		self.location='liaotianxinxi.php';
        return;
    }
	if (document.getElementById("reply").value=="") {
        alert('请输入要发送的消息');
        return;
    }
  obj.disabled = true;
var customer = $("#customer").val();
var reply = $("#reply").val();
  $.ajax({
      url: "customer.php",
      type: "Post",
      data: "customer=" + customer + "&reply= "+ reply,
      success: function(msg) {
          obj.disabled = false;
		  $("#reply").val('');
	alert('已发送\n'+s);

      }
  })
  }
</script>
<textarea name="reply" placeholder="点此回复消息" id="reply" type="text"></textarea>
<input type="submit" value="发送" onClick="get(this)">
请高手帮看看怎么解决这个冲突,谢谢!
讨厌走开啦 2018-09-10
  • 打赏
  • 举报
回复
尽量在用户发生请求的时候再检查用户的合法性,频繁请求微信的接口会有问题。
qq_783939100 2018-09-09
  • 打赏
  • 举报
回复
引用 1 楼 jslang 的回复:

check_mge.php?time="+new Date().getTime(),
晚上好,感谢回复,经测试,还是不行,帮再研究研究,谢谢!
天际的海浪 2018-09-09
  • 打赏
  • 举报
回复

check_login();
function check_login() {
$.post("check_mge.php?time="+new Date().getTime(), {scene_id: "1",scene_id2:"2",timeset : "1536485088"}, function(data) {
if (data.msid != null) {
//alert("有数据");
location.href="mem.php?time="+new Date().getTime();
} else {
setTimeout("check_login()", 5000);
}
}, "json");
}

87,907

社区成员

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

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