Вызов функции каждую секунду.
Здравствуйте, я буквально вчера начал изучать 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, время: 18:57. |