#jquery #ajax
#jquery #ajax
Вопрос:
Кто-нибудь может понять, почему этот jQuery ajax не работает? Предполагается, что он запускается каждую секунду, но он вообще не запускается.
Исходный код:
<script type="text/javascript">
var auto_refresh = setInterval(
function ()
{
var ID = $(this).attr("id");
if(ID)
{
$("#more" ID).html('<img src="moreajax.gif" />');
$.ajax({
type: "POST",
url: "ajax_more.php",
data: "lastmsg=" ID,
cache: false,
success: function(html){
$("ol#updates").prepend(html);
$("#more" ID).remove();
}
});
}
else
{
}
return false;
}, 10000);
Комментарии:
1. Я не совсем уверен, но я думаю, что первым параметром setInterval является имя функции в виде строки, а не сама функция.
2. @Eliasdx: Вы ошибаетесь. Можно передать строку исполняемого кода в
setTimeout
, но этого не следует делать. Передаем функцию.3. Разве это не выполнялось бы каждые 10 секунд? Вы уверены, что он не запущен, или вы просто недостаточно долго ждете?
4. Изменил его тоже 1 и по-прежнему ничего.
5. @user Вы проверяли консоль ошибок в браузере?
Ответ №1:
var ID = $(this).attr("id");
В предоставленном вами контексте $(this)
будет преобразован в пустой набор. Таким образом, ваша последующая проверка if(ID)
всегда будет ложной.
Вы должны передать фактический селектор в $()
, чтобы выбрать элемент dom, идентификатор которого вы хотите получить.
Ответ №2:
попробуйте удалить:
return false;
также у вас есть setInterval для запуска каждые 10000 мс, что равно 10 секундам.