Đây là những gì tôi đã làm và tôi đã sử dụng câu trả lời bạn đã đánh dấu nhưng tôi nghĩ có một vài điều cần thay đổi ở đó. trong trang chính (mà bạn muốn làm mới nếu có gì đó thay đổi trong cơ sở dữ liệu). tôi đã tạo một bảng trong cơ sở dữ liệu của tôi được gọi là thiết lập, trong bảng này tôi tạo ra một hàng gọi là rowCounter. có rowCounter đang được cập nhật khi số lượng hàng trong bảng bạn kiểm tra đã thay đổi. vì vậy mã của tôi nằm trong hai khối. một trong đó cung cấp cho tôi số từ cài đặt> rowCounter và một là tập lệnh cung cấp cho tôi số hiện tại trong bảng. nếu chúng không bằng nhau thì tôi làm mới trang.
vì vậy đây là tệp đầu tiên bạn cần. gọi nó là
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);
}
Trong trang chính, bạn sẽ viết hai khối mã tôi viết, bạn đặt nó trước khi kịch bản.
$countFromSetting=mysql_query("SELECT `rowCounter` FROM setting WHERE id='2'")or die(mysql_error);
$numberFromSetting=implode(mysql_fetch_assoc($countFromSetting));
Sau khi mã này bạn đặt các kịch bản đó sẽ truy vấn mỗi vài giây trang php, kiểm tra xem những con số không bằng nhau nó sẽ làm mới trang.
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);
Nguồn
2012-12-06 09:29:18
Trước hết, JQuery thêm cách quá nhiều chi phí cho một nhiệm vụ đơn giản như thế này. Nếu bạn đang đi tuyến đường AJAX, chỉ cần sử dụng một đối tượng 'XMLHttpRequest'. Ngoài ra, như tôi đã nói trong bài đăng của tôi, hãy giữ những thứ như 'pageGenID' * phía máy chủ * của bạn do nguy cơ cao của javascript hoặc tiêm MySQL. – Qix
trong php của bạn, bạn cần phải lặp lại nó và không trả lại –
@OfirAttia: Vâng, việc lặp lại được thực hiện bởi tập lệnh PHP đã tạo JavaScript. Tôi nên làm rõ điều đó. – Kalessin