jQuery ajax не работает?

#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 секундам.