这是我做了什么,我用你标记的答案,但我认为有几件事要改变。主页中的 (如果数据库中的某些内容发生更改,则要刷新该页)。 我在我的数据库中创建了一个名为setting的表,在这个表中我创建了一个名为rowCounter的行。 当您检查的表中的行数已更改时,rowCounter正在更新。 所以我的代码是在两个块。一个给我从设置数字> rowCounter 另一个是脚本给我的表中的当前数字。如果他们不相等,那么我刷新页面。
这样你就可以第一个文件。称之为
script_to_return_latest_pageGenID.php
// here you will make you connection query.
$result = mysql_query("SELECT rowCounter FROM setting WHERE `id`='2'");
$update = mysql_fetch_assoc($result);
echo implode($update);
$count=mysql_query("SELECT `id` FROM log_".$datestamp."")or die(mysql_error);
$number = mysql_num_rows($count);
//echo $number;
$countFromSetting=mysql_query("SELECT `rowCounter` FROM setting WHERE id='2'")or die(mysql_error);
$numberFromSetting=implode(mysql_fetch_assoc($countFromSetting));
if($number != $numberFromSetting)
{
mysql_query("UPDATE setting SET `rowCounter`='$number' WHERE `id`='2'")or die(mysql_error);
}
在主网页你会写代码的两大块我写的,你把它的脚本之前。
$countFromSetting=mysql_query("SELECT `rowCounter` FROM setting WHERE id='2'")or die(mysql_error);
$numberFromSetting=implode(mysql_fetch_assoc($countFromSetting));
此代码后,你把那个会查询每隔几秒钟PHP页面,检查数量不相等,它会刷新页面的脚本。
var pageGenID = "<?php echo $numberFromSetting; ?>";
var processUpdate = function(response) {
var x=response;
//console.log(pageGenID); by removing the remarks you will see the compared numbers all the time.
//console.log(x);
if (pageGenID != x)
{
//replace_current_data_with_new_via_ajax();
pageGenID = response;
window.location.reload();
}
}
var checkUpdates = function()
{
serverPoll = setInterval(function()
{
$.get('script_to_return_latest_pageGenID.php',
{ lastupdate: 1 },
processUpdate, 'html');
}, 5000) };
$(document).ready(checkUpdates);
首先,JQuery的补充方式对于这样一个简单的任务来说,开销太多了。如果你要使用AJAX路线,只需使用一个XMLHttpRequest对象。另外,就像我在我的文章中指出的那样,由于JavaScript或MySQL注入的风险增加,请保留诸如`pageGenID` *服务器端*之类的东西。 – Qix 2011-01-07 20:26:23