作者No (you stay there)
看板Ajax
标题Re: [ js ] setTimeout更新页面
时间Tue Oct 16 04:22:21 2012
※ 引述《LordCHTsai (我饿了)》之铭言:
: 正在写一个投票系统,投票到开票时间设定之後,介面会根据时间自动转换
: js的部分
: function checkstatus()
: {
: var xmlhttp;
: if(window.XMLHttpRequest)
: {
: xmlhttp = new XMLHttpRequest();
: }
: else
: {
: xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
: }
你这是用同步写法
应该呼叫send(),server回应之後才进这段
但这个顺序导致恒false
要验证就加个alert或者console.log()
把xmlhttp.readyState亮出来看看
: if (xmlhttp.readyState==4 && xmlhttp.status==200)
: {
: if( document.getElementById(mode).innerHTML != xmlhttp.responseText )
: {
: switch(xmlhttp.responseText)
: {
: case prepared:
: document.location.href="prepared.php";
: break;
: case voting:
: document.location.href="voting.php";
: break;
: case completed:
: document.location.href="completed.php";
: break;
: }
: }
: }
上面是同步的写法
但这里非同步AJAX
↓这里
: xmlhttp.open("GET","check_status.php",true);
: xmlhttp.send();
: setTimeout(function(){checkstatus();},3000);
: }
: 然後html用<script>check_status()</script>来呼叫
: 可是每次都执行一次就停止了
: 而且我在function内放alert也没有反应,完全不知道程式跑到哪
: 请求一下协助
所以问题不是在setTimeout
而是在同步非同步AJAX混在一起了
所以就看你是要做同步还是非同步来改吧~
--
▄ 鬼打墙.c - Code::Blocks http://鬼打墙.com/ __
438● if(!mark[i][j] && (0 != (nums[i] & mask[j]))){ ︿
439 ma Warning!!! ○ │
440 vi 程式写到鬼打墙?快上 http://ghosthitswall.com/ ag);
441 ma 是 好 │
442 } //ψhtx9 ↗ ﹀
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 1.165.185.214