0

$.get data on doc ready から入力された DIV があり、5 秒ごとに setInterval を呼び出します。#are_friends の html データが以前と同じである場合は setInterval $.get が成功しますが、異なる場合はデータを #are_friends に再度ロードします。

私がこれをどのように行うか、または私が実装しようとしているよりも良い方法を知っている人はいますか?

<div id="are_friends"></div>


<script type="text/javascript">
    $(document).ready(function() {  
                $.get('<?php echo $siteUrl ?>are_friends.php?userid=<?php echo $userid; ?>', function(data) {
                           $("#are_friends").html(data);
                });


        var auto_refresh = setInterval(
         function ()
        {

            $.ajax({
              url: "<?php echo $siteUrl ?>are_friends.php?userid=<?php echo $userid; ?>",
              success: function(newdata){
                var oldcontent = $("#are_friends").html();
                if(oldcontent != newdata) {
                    $("#are_friends").html(newdata);
                }
              }
            });
        }, 5000); // refresh every 5000 milliseconds
    });
</script> 
4

2 に答える 2

0

少なくとも、次のようにデータを取得する関数を再利用できます。

  function getData(callback)
  {
        $.ajax({
          url: "<?php echo $siteUrl ?>are_friends.php?userid=<?php echo $userid; ?>",
          success: function(newdata){
            callback(newdata);
          }
        });
  }

  $(document).ready(function() 
  {  
        getData(function(data)
        {
            $("#are_friends").html(data);
        });

        var auto_refresh = setInterval(function ()
        {
            getData(function(newdata)
            {
                if($("#are_friends").html() != newdata) {
                    $("#are_friends").html(newdata);
                }
            });
        }, 5000);
    });

実際には、最初の呼び出しとその後の呼び出しは同じなので、再利用しないでください。

于 2012-11-14T17:06:58.320 に答える
0

これは、作業しているデータに大きく関係しています。現在、あなたは無駄なトラフィックを大量に生成しています。are_friends.php をリクエストするときに、現在の状態のマーカーも送信することをお勧めします。PHP は、そのマーカーを使用して何かが変更されたかどうかを確認し、「変更なし」または更新された HTML を返します。ここで、何も変更されずトラフィックが少ない場合は、サーバーの負荷を下げる必要があります(ほとんどのリクエストが「変更なし」を返すと仮定します)。しかし、再び。are_friends.php で何をしているか、必要なデータなどによって異なります。

于 2012-11-14T17:13:18.500 に答える