0

データベースから売上を自動更新するhttp://www.minecraft.netページのような効果を得ようとしています。これを 2 か月間調査していますが、運がありません。データベースにある結果の数を見つけて数値として表示するphpファイルがあります。http://tzeale.com/sandbox/stats/pull.php

私がやろうとしているのは、ページを更新せずに自動更新する minecraft.net のような効果を得ることです。誰かが私に何をすべきか教えてもらえますか? 他に何を試すべきかわかりません。

ありがとう。

4

2 に答える 2

2

hAJAX を使用する必要があります。

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);
})();
于 2012-07-04T22:10:35.893 に答える
1

setTimeoutAjaxを使用します。setTimeout は、データを取得するために Ajax を使用して 1000 ミリ秒ごとに (または設定した方法で) データを取得します。

htmlたとえば、次のように表示カウントをラップします。

<span id="mycount"></span>

次に、jQuery コードは次のようになります。

 setTimeout(function(){
   $.get("/sandbox/stats/pull.php",function(data){
      $("#mycount").html(data);
   });
 },1000);

1000は 1 秒ですが、必要に応じて変更できます。そのようにアニメーション化する方法はわかりませんが$.get()、データを取得すると関数内に入ります。また、同じオリジン ポリシーhttp://tzeale.com/により、Ajax が機能するには、これが同じドメイン上にある必要があります。


ただし、 minecraft.netサイトを確認したところ、1 秒ごとに取得するのではなく、このデータを 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

于 2012-07-04T22:06:06.113 に答える