我制作了一个从一个到无穷大的计数器,如果我刷新页面它就不会停止 但是我使用ajax来更新数据库中的某些数据,这样做效果不佳...... 我认为问题是ajax文件不能运行
HTML:
<html>
<head>
<?php include "config.php"; ?>
<script type="text/javascript">
function createXMLHttpRequest(){
var ua;
if(window.XMLHttpRequest) {
try {
ua = new XMLHttpRequest();
}catch(e) {
ua = false;
}
}else if(window.ActiveXObject) {
try{
ua = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e) {
ua = false;
}}
return ua;}
var some = createXMLHttpRequest(c);
function some1(){
some.open('GET', 'Untitled_4.php?value='+c);
some.onreadystatechange = hand;
}
function hand() {
if(some.readyState == 4)
{
some.send(null);
}
}
var c=
<?php
$c= mysql_fetch_array( mysql_query("SELECT * FROM `clock` WHERE `id`=1"));
$l=time()-$c['time'];
$a=$l/1;
$a=floor($a);
$a=$a+$c['value'];
echo $a;
?>;
var t;
var timer_is_on=0;
function timedCount()
{
document.getElementById('txt').innerHTML=c;
c=c+1;
t=setTimeout("timedCount()",1000);
}
function doTimer()
{
if (!timer_is_on)
{
timer_is_on=1;
timedCount();
}
}
</script>
</head>
<body onunload="some1(c)" onload="doTimer()">
<form>
<div id="txt" ></div>
</form>
</body>
</html>
AJAX文件:
<?php
include "config.php";
$value=$_GET['value'];
mysql_query("UPDATE `clock` SET `time`=".time().",`value`= $value WHERE `id` = 1 ");
echo "1";
?>
答案 0 :(得分:0)
除非您发送readystate
,否则XMLHttpRequest
不会更新。
以下版本的some1
应该可以解决您的问题:
function some1(){
some.open('GET', 'Untitled_4.php?value='+c);
some.send(null);
}
你真的不需要onreadystatechanged
处理程序,因为你在页面卸载时发送请求,而且我没有足够的时间来处理XMLHttpRequest状态的更改。