5

これは私の最初の質問です。すぐに答えていただければ幸いです。

関数を継続的に繰り返すコードが欲しい... いくつかのコードを試しましたが、うまくいきませんでした。

私はこのコードを試しました:

<script type="text/javascript">
$(function() 
{
$('#more').load('exp1.php'); // SERIOUSLY!
});
</script>

しばらくしてからこの機能を繰り返したい。私は試してみまし setInterval()setTimeout()

しかし、私は結果を受け取っていません。

4

5 に答える 5

10

これにより、間隔をクリアするまでタスクが繰り返されます(clearTimeout(repater)を使用)

var repeater;

function doWork() {
 $('#more').load('exp1.php');
 repeater = setTimeout(doWork, 1000);
}

doWork();

OPの元の状態ごと:

機能を継続的に繰り返すコードが欲しい...

于 2012-12-15T18:10:18.107 に答える
3

あなたはこれを次のように行うことができます

var myFunction = function() {
    $('#more').load('bla.php'); 
};

var timer =  setInterval(myFunction, 1000); // call every 1000 milliseconds

また

var timer = setTimeout(myFunction, 1000); // call every 1000 milliseconds

clearTimeout(timer); //To stop the function from being called forever

as @Christofer Eliasson Ajaxリクエストの場合、サーバーが1を超える場合に呼び出しをスタックしないように、間隔の代わりにタイムアウトを使用し、コールバックでタイムアウトを再開することをお勧めします。 2番目に応答する

良い読み物

  1. MDN:window.setTimeout
  2. MDN:window.setInterval
于 2012-12-15T18:07:28.957 に答える
2

Ajax リクエストの場合、間隔の代わりにタイムアウトを使用し、ajax リクエストのコールバックでタイムアウトを再度開始します。

たとえば 1 秒の間隔を使用し、サーバーが応答するのに 1 秒以上かかる場合は、間隔を指定して呼び出しをスタックし始めます。これは、間隔が何があっても毎秒関数を呼び出すためです。代わりに、タイムアウト イン コールバック アプローチを使用すると、前のリクエストが完了するまでカウントダウンを開始しません。

関数の最初の呼び出しをトリガーするためにIIFEを使用しています。次に、読み込みが完了したら、タイムアウトを使用して 1 秒後に関数を再度呼び出します。

(function loadContent(){
    $('#more').load('exp1.php', function () {
       setTimeout(loadContent, 1000);
    });   
})();
于 2012-12-15T18:13:41.113 に答える
0

Just throwing it out there:

function doRequest() {
$.ajax({
  url: 'exp1.php',
  timeout: 1000,
  success: function(data) {
    $('#more').html(data);
    doRequest();
  }
});
}
于 2012-12-15T18:28:53.403 に答える
-1

古き良きファッションの再帰はどうですか?

function getStuff() {
    $('#more').load('exp1.php', function() {
        getStuff();
    });
}

getStuff();​

デモ: http:
//jsfiddle.net/Zn2rh/1/

于 2012-12-15T18:37:59.643 に答える