计数器php-js不会在数据库中更新

时间:2012-03-26 19:11:46

标签: php javascript

我制作了一个从一个到无穷大的计数器,如果我刷新页面它就不会停止 但是我使用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";
?>

1 个答案:

答案 0 :(得分:0)

除非您发送readystate,否则XMLHttpRequest不会更新。 以下版本的some1应该可以解决您的问题:

function some1(){
    some.open('GET', 'Untitled_4.php?value='+c);
    some.send(null);
}

你真的不需要onreadystatechanged处理程序,因为你在页面卸载时发送请求,而且我没有足够的时间来处理XMLHttpRequest状态的更改。