12

繰り返し可能なクエリに遅延を追加しようとしています。

ここで使用するのは .delay ではないことがわかりました。代わりに、setInterval または setTimeout を使用する必要があります。私は両方を試しましたが、運がありませんでした。

これが私のコードです:

<?php 
include("includes/dbconf.php");

$strSQL = mysql_query("SELECT workerID FROM workers ORDER BY workerID ASC");
while($row = mysql_fetch_assoc($strSQL)) {
?>
<script id="source" language="javascript" type="text/javascript">

  $(setInterval(function ()
  {
    $.ajax({                                      
      cache: false,
      url: 'ajax2.php',        
      data: "workerID=<?=$row['workerID'];?>",
      dataType: 'json',    
      success: function(data)
      {
        var id = data[0];              //get id
        var vname = data[1];           //get name
        //--------------------------------------------------------------------
        // 3) Update html content
        //--------------------------------------------------------------------
        $('#output').html("<b>id: </b>"+id+"<b> name: </b>"+vname);
      } 
    });
  }),800); 

  </script>
<?php
}
?>
<div id="output"></div>

コードは正常に動作し、要求どおりに結果を出力します。遅延なくロードするだけです。タイムアウトおよび/または間隔が機能していないようです。

誰かが私が間違っていることを知っていますか?

4

3 に答える 3

2

注: Chris Kempen の回答 (上記) の方が優れています。そちらをご利用ください。彼は、AJAX ルーチン内でこの手法を使用しています。setTimeout の使用が setInterval よりも望ましい理由については、この回答を参照


//Global var
is_expired = 0;

$(function (){

    var timer = setInterval(doAjax, 800);

    //At some point in future, you may wish to stop this repeating command, thus:
    if (is_expired > 0) {
        clearInterval(timer);
    }

}); //END document.ready

function doAjax() {
    $.ajax({                                      
        cache: false,
        url: 'ajax2.php',        
        data: "workerID=<?=$row['workerID'];?>",
        dataType: 'json',    
        success: function(data) {
            var id = data[0];              //get id
            var vname = data[1];           //get name
            //--------------------------------------------------------------------
            // 3) Update html content
            //--------------------------------------------------------------------
            $('#output').html("<b>id: </b>"+id+"<b> name: </b>"+vname);
        }
    }); //END ajax code block
} //END fn doAjax()
于 2013-09-23T18:03:52.760 に答える