我正在尝试获得类似于http://www.minecraft.net页面的效果,它会自动更新数据库中的销售额,我已经研究了两个月,但没有运气。我有一个 php 文件,它查找数据库中有多少结果并将它们显示为一个数字,工作正常http://tzeale.com/sandbox/stats/pull.php
我想要做的是获得类似 minecraft.net 的效果,它会自动更新而不刷新页面。谁能指导我该怎么做?我不知道还能尝试什么。
谢谢。
我正在尝试获得类似于http://www.minecraft.net页面的效果,它会自动更新数据库中的销售额,我已经研究了两个月,但没有运气。我有一个 php 文件,它查找数据库中有多少结果并将它们显示为一个数字,工作正常http://tzeale.com/sandbox/stats/pull.php
我想要做的是获得类似 minecraft.net 的效果,它会自动更新而不刷新页面。谁能指导我该怎么做?我不知道还能尝试什么。
谢谢。
h 您需要使用 AJAX。
setTimeout,以及对该 pull.php 的 AJAX 调用
如果您使用的是 jQuery,这里有一个很好的例子来说明如何实现您想要的。添加了一个简单的逻辑来查看服务器是否死机,并最终停止。
var failed = 0;
var limit_failed = 5;
(function updateSales( waitTime ){
waitTime = waitTime || 1000; // Set to 1 second by default
setTimeout(function(){
$.ajax({
url: 'pull.php',
success: function( response ){
// Update something with your response
alert ("sales are now at: "+ response);
updateSales(); // Recursion
},
error: function(){
// Error handling - not necessary
// If the request failed more then (limit_failed) times, you might want to stop it from checking after (limit_failed) times,
// and in the meanwhile icnrease the wait time, so the server has more time to get back online.
if( ++failed < limit_failed ){
waitTime += 1000;
updateSales( waitTime );
}
}
});
}, waitTime);
})();
您将使用setTimeout
和 Ajax。setTimeout 将使用 Ajax 每 1000 毫秒(或您设置它)获取数据以获取数据。
您可以html
像这样将显示计数包装起来,例如:
<span id="mycount"></span>
然后你的 jQuery 代码看起来像这样:
setTimeout(function(){
$.get("/sandbox/stats/pull.php",function(data){
$("#mycount").html(data);
});
},1000);
1000
是一秒,您可以根据需要更改它。我不知道如何让它像那样动画,但是$.get()
一旦你检索数据,它就会进入你的函数。http://tzeale.com/
此外,由于相同的来源策略,这必须与 Ajax 工作在同一个域上
但是,在查看了 te minecraft.net 站点后,我注意到他们一次将这些数据加载到他们的页面中,而不是每 1 秒获取一次:
<script>
var justLoggedIn = false;
var totalUsers = 33652552;
var paidUsers = 6495707;
var totalUsersRate = 1.2166667;
var paidUsersRate = 0.15;
</script>
然后他们没有得到实时数据。他们只是得到当前的数量,然后继续加 1。
他们使用这个插件使它动画化:http: //timeago.yarp.com/
并且仍然使用setTimeout()
每秒添加 1 个。我认为这不是真正的用户,只是从var totalUsers