如何使用jQuery从mySQL数据库获取实时数据一个秒
我需要更改document.write所以我在新页面中看到结果
<SCRIPT>
setTimeout("document.write('<p><?php
$qry = mysql_query('SELECT SUM(clicks) AS total FROM short_urls');
$row = mysql_fetch_assoc($qry);
echo number_format($row['total']); ?></p>')",1000);
</SCRIPT>
答案 0 :(得分:4)
一个简单的策略是使用setTimeout
:
setTimeout( function(){
your_function_that_gets_data();
your_function_that_displays_data();
}, 1000 );
对于更复杂的方法,您可以查看long polling。
更新: Anas,在我提出上述选项之后,您似乎有点偏离了轨道。无论您使用的是setTimeout()
还是setInterval()
,您当然都希望避免混淆更新问题的混乱。
创建一个只返回总数的php页面。编写您的JavaScript以异步方式(即通过ajax)以您喜欢的任何间隔调用该页面。返回结果时,使用回调函数重绘页面区域,以便为用户更新总计。
这样的事情:
var updateTotal = function () {
$.get('your_script_that_returns_a_total.php', function( data ){ // get new total
$('#div_displaying_total').val( data ); // paint a div with the new result
});
};
现在您有一个简单的功能,在运行时,将使用当前总数更新视图中的div。根据需要频繁运行该功能。例如,要每五秒运行一次:
var running = setInterval( updateTotal, 5000 );
你当然可以通过计时获得更多的动力,编写你的updateTotal
函数,在延迟后调用自己等等。你可以像这样停止更新:
clearInterval( running );
...允许您轻松设置开/关开关。
如果任何一个导致更清晰,我建议更新你的问题,这会吸引其中混乱代码的暗示。
答案 1 :(得分:2)
您必须使用PHP来调用数据库以读取其中的所有行。每隔1000毫秒(1秒),使用JavaScript setTimeout()
函数的AJAX事件集将调用PHP。我可以看到的huuuuge问题是,如果你有很多用户,一个大型数据库和大量的同时登录,你将很快超载你的服务器。我认为每隔30秒提交一次请求会更好,或者至少10次。