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);
не работает, потому что