Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.08.2009, 17:47
Новичок на форуме
Отправить личное сообщение для can2zia Посмотреть профиль Найти все сообщения от can2zia
 
Регистрация: 14.08.2009
Сообщений: 7

Вызов функции каждую секунду.
Здравствуйте, я буквально вчера начал изучать 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>
Ответить с цитированием
  #2 (permalink)  
Старый 14.08.2009, 17:51
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

jQuery не отменяет чистый JavaScript.
Ответить с цитированием
  #3 (permalink)  
Старый 14.08.2009, 17:58
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Kolyaj, вот видишь... Библиотеки - зло... Надо вообще удалить эти ветки
Ответить с цитированием
  #4 (permalink)  
Старый 14.08.2009, 17:59
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Целиком и полностью согласен.
Ответить с цитированием
  #5 (permalink)  
Старый 14.08.2009, 18:13
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

А Вы куда пихаете 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)
}

Последний раз редактировалось e1f, 14.08.2009 в 18:15. Причина: написал фигню
Ответить с цитированием
  #6 (permalink)  
Старый 14.08.2009, 18:15
Новичок на форуме
Отправить личное сообщение для can2zia Посмотреть профиль Найти все сообщения от can2zia
 
Регистрация: 14.08.2009
Сообщений: 7

Я понимаю, что не отменяет. Если у вас есть возможность, ответьте на мои вопросы пожалуйста.
Ответить с цитированием
  #7 (permalink)  
Старый 14.08.2009, 18:18
Новичок на форуме
Отправить личное сообщение для can2zia Посмотреть профиль Найти все сообщения от can2zia
 
Регистрация: 14.08.2009
Сообщений: 7

Отлично, спасибо! =) Я куда только не пихал на самом деле, но так не делал. Не думал, что нужно так =)
С первым вопросом разобрались, а что со вторым? =)
Ответить с цитированием
  #8 (permalink)  
Старый 14.08.2009, 18:29
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Я Вас немного обманул. Правильно будет так:
<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>
Ответить с цитированием
  #9 (permalink)  
Старый 14.08.2009, 18:41
Аспирант
Отправить личное сообщение для Urfin Посмотреть профиль Найти все сообщения от Urfin
 
Регистрация: 22.07.2009
Сообщений: 85

А по второму вопросу примерно так:
$("#userlist").html($("#userlist").find('div:first-child').html());
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вызов функции из iframe Geddar Я не знаю javascript 6 25.05.2009 11:46
Вызов событий из js функции Destrifer Общие вопросы Javascript 5 29.11.2008 15:28
Вызов функции zxc Общие вопросы Javascript 6 15.09.2008 11:56
вызов функции, из JS генерируемого на сервере subaru AJAX и COMET 1 12.07.2008 13:44
Вызов функции из файла. Phoenix Общие вопросы Javascript 2 21.11.2007 22:49