我正在尝试像http://www.minecraft.net页面那样自动更新数据库销售的效果,我已经研究了两个月了,没有运气。 我有一个php文件,可以查找数据库中有多少结果并将它们显示为数字,工作正常http://tzeale.com/sandbox/stats/pull.php
我正在尝试的是获得类似于minecraft.net的效果,它会在不刷新页面的情况下自动更新。任何人都可以指导我做什么?我不知道还有什么可以尝试的。
感谢。
答案 0 :(得分:2)
你需要使用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);
})();
答案 1 :(得分:1)
您将使用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()
函数。此外,由于same origin policy
http://tzeale.com/
相同的域中
HOWEVER ,在浏览了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