mysql更改时更新页面?

时间:2010-11-09 20:02:56

标签: php javascript mysql ajax

我在网站上有一个页面,类似于反向拍卖。它有一个javascript倒计时器,根据拍卖的时间长短。当它达到零时,拍卖结束并且页面刷新。

一切都像梦一样,但问题是如果出价,我希望页面刷新显示该出价,并更新许多其他元素。

该网站目前通过闪存检查php文件来执行此操作,当闪存通知更改刷新页面时。这很好,但是我们不会删除flash并且只使用javascript,因此我们在iPhone / iPad和其他移动设备上运行该站点时没有任何问题。

所以,经过长时间的积累后,我需要一个解决方案,无论是这个AJAX还是其他方法,任何帮助都比这更受欢迎......

提前致谢

3 个答案:

答案 0 :(得分:2)

我没有使用jQuery就做了你想要的东西;我不想只为一个函数安装jQuery。这有点泛,因为我实际使用的代码对其他任何人都没有意义。我在iframe中使用了一个PHP页面来定期检查数据库中的关键字段是否发生了变化。如果它改变了PHP脚本设置了一个cookie。在主页面中,一些javascript会定期读取cookie并刷新页面,如果cookie表明数据已更改。这大约是我做的。我修改了代码,使其不符合我的需求。

首先,您需要一个简短的PHP页面来定期检查数据库(主页需要设置相应的cookie):

<?
//This page is named "check.php"

$OldTimestamp = $_COOKIE["timestamp"];
$id = $_COOKIE["id"];

mysql_connect('localhost','MyUsername','MyPassword');
mysql_select_db('MyDatabase');

$query = "SELECT timestamp FROM MyTable WHERE id = '$id'";
$result = mysql_query($query);
$numrows = mysql_numrows($result);

if($numrows > 0){
  $timestamp = mysql_result($result,0,"timestamp");
  if($timestamp == $OldTimestamp){
    setcookie("DataChanged", "N");
  }else{
    setcookie("DataChanged", "Y");
  }
}

?>
<html>
<head>
<meta http-equiv='refresh' content='5'>
</head>
<body>
</body>
</html>

将此页面加载到您要刷新的页面中的iframe

<iframe src='check.php' width='0' height='0' frameborder='0'></iframe>

现在您需要在页面上添加一些要刷新的javascript。这包括我能找到的最短的cookie阅读器以及一些每15秒检查一次cookie的代码,如果cookie指示数据发生了变化,则刷新页面。

<script language='javascript'>
function get_cookie(name){
  return(document.cookie.match('(^|; )'+name+'=([^;]*)')||0)[2]
}
function checkDatabase(){
  if(get_cookie('DataChanged')=="Y"){
    location.href='ThisPage.php';
  }
}
setInterval(function(){checkDatabase()},15000);
</script>

答案 1 :(得分:1)

使用jQuery和计时器 离。

setInterval(function(){
   $.getJSON(
     "myPath/myFile.php",
   {
      myData1:myDataVar1,
      myData2:myDataVar2
   },
function(response){
   // Here the code
   });
},1000);

(以毫秒为单位的时间)

答案 2 :(得分:1)

您应该创建一个div ID来显示出价金额。并使用jQuery通过AJAX调用更新数量,如下所示。

setTimeout('update_amount()', 1000);

function update_amount(){
        var amt = $("#amount").html();
        $.post('ajax_file.php?a='+amt, function(data){
        if(data!=''){
            $('#amount').html(data);                
        }

此处页面中显示的当前值存储在 amt 中。然后这个值通过AJAX作为post传递给php文件。您必须执行以下过程来检查mySql表中的金额是否已更改,如果更改,则只回显该php文件中的新金额。该金额将在当前页面的金额div id中更新。