Вызов функции каждую секунду.
Здравствуйте, я буквально вчера начал изучать jQuery и сразу же столкнулся с некоторыми проблемами, которых у меня не возникало при работе с чистым JavaScript. Помогите пожалуйста решить некоторые проблемы.
Собственно вопросы: 1) Как сделать так, чтобы функция readUserList() выполнялась каждую секунду автоматически? (Пробовал SetTimeout, который прекрасно работает в чистом JS, тут же происходит зацикливание и браузер падает. Так же пробовал использовать плагины таймеров для jQ, эффект тот же - зацикливание и падение браузера.) Подскажите как сделать правильно. 2) Можно ли заменить информацию в контейнере <div id="userlist"></div> не используя $("#userlist").empty();, т.е. вот так - document.getElementById("userlist").innerHTML = UserList.item(0).firstChild.data; Код: <body> <script type="text/javascript"> $(document).ready ( function readUserList() { $.ajax({ type: "POST", url: "u.php", dataType: 'xml', timeout: 3000, success: function(xml) { $("#userlist").empty(); var xmlUserlist = $(xml).find('response'); $("#userlist").append(xmlUserlist.find('userlist').text()); }, error: function() { $("#userlist").empty(); $("#userlist").append("ERROR"); } }); } ); </script> <div id="userlist"></div> </body> |
jQuery не отменяет чистый JavaScript.
|
Kolyaj, вот видишь... Библиотеки - зло... Надо вообще удалить эти ветки:)
|
Целиком и полностью согласен.
|
А Вы куда пихаете SetTimeout? По идее, в Вашем случае надо сюда:
success: function(xml) { $("#userlist").empty(); var xmlUserlist = $(xml).find('response'); $("#userlist").append(xmlUserlist.find('userlist').text()); // тут вставляем setTimeout(readUserList, 1000) }, error: function() { $("#userlist").empty(); $("#userlist").append("ERROR"); setTimeout(readUserList, 1000) } |
Я понимаю, что не отменяет. Если у вас есть возможность, ответьте на мои вопросы пожалуйста.
|
Отлично, спасибо! =) Я куда только не пихал на самом деле, но так не делал. Не думал, что нужно так =)
С первым вопросом разобрались, а что со вторым? =) |
Я Вас немного обманул. Правильно будет так:
<body> <script type="text/javascript"> var readUserListTimeout; $(readUserList); function readUserList() { $.ajax({ type: "POST", url: "u.php", dataType: 'xml', timeout: 3000, success: function(xml) { var xmlUserlist = $(xml).find('response'); /* Если у Вас в xmlUserlist.userlist есть теги, и * вставить надо с тегами, то пользуем .html, иначе .text */ $("#userlist").html(xmlUserlist.find('userlist').text()); // тут вставляем clearTimeout(readUserListTimeout) readUserListTimeout = setTimeout(readUserList, 1000) }, error: function() { $("#userlist").text("ERROR"); // тут вставляем clearTimeout(readUserListTimeout) setTimeout(readUserList, 1000) } }); } </script> <div id="userlist"></div> </body> |
А по второму вопросу примерно так:
$("#userlist").html($("#userlist").find('div:first-child').html()); |
Часовой пояс GMT +3, время: 19:42. |