11

間隔内の AJAX 呼び出しについて質問があります。そして、なぜそれが機能しないのか、または機能するように機能するのか。

私はこのコードを持っています (これは動作しません)

setInterval($.ajax({
  //Place code here
}), 2000);

しかし、私はそれをこのようにします

setInterval(function() {
  $.ajax({
    //Do ajax stuff here
  });
}, 2000);

今はうまくいきますが、これは追加の匿名関数を作成するだけのように見えます。

4

2 に答える 2

11

setInterval文字列形式の関数または実行可能コードが必要です。

最初の呼び出しは、文字列内に配置すると機能します。

setInterval('$.ajax({ //Place code here })', 2000);

を使用するのと同じ理由で、この構文の使用は推奨されませんeval

setIntervalパラメータのオプションのリストを取ることもできます。この事実を利用して、次のようなものを使用できます。

setInterval($.ajax/*a reference to the ajax function*/,
 2000, {url: 'someurl', success: onSuccess, error: onError}/*args passed to $.ajax*/
);

の値が にバインドされるthisため、これはコンテキストを決定するためにを使用するオブジェクト メソッドでは機能しないことに注意してください。つまり、次の場合は機能しません。thiswindow

setTimeout($('h1').css, 1000, {'color': 'red'});
于 2013-10-01T12:34:58.823 に答える
3

setInterval関数は最初の引数(参照)setInterval($.ajax({ //Place code here }), 2000);として必要であり、それが機能しない理由です。関数は(参照)$.ajaxを返すためです。jQuery XMLHttpRequest object

setInterval(function() { $.ajax({ //Do ajax stuff here }); }, 2000);確かに無名関数を作成しますが、コードを引用してstring.

于 2013-10-01T12:36:15.013 に答える