jQuery AJAX с интервалом

у меня есть вопрос о вызове AJAX в течение интервала. И почему это не работает, или работает так, как работает.

у меня есть этот код (этот не работает)

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

но тогда я делаю это таким образом

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

теперь это работает, но мне кажется, что я делаю только дополнительную анонимную функцию.

2 ответов


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 определить контекст, как значение this будет обязательно window. То есть, не сработало бы следующее:

setTimeout($('h1').css, 1000, {'color': 'red'});

setInterval требуется функция в качестве первого аргумента (ссылка) и поэтому setInterval($.ajax({ //Place code here }), 2000); не работает, потому что