Javascript.RU

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

Ajax чат - проблема
Решил модернизировать свой Ajax чат.
Нужно обновлять контейнер с помощью ajax и показывать всегда низ обновляемой страницы.
Как на большинстве чатов. Новое сообщение - внизу. Следущее - появляется ещё ниже, контейнер (страница "аля фрейм" - чтобы понятнее было ) автопрокручивается вниз, отображая новые сообщения.

У меня есть 2 страницы.
1я страница - с ajax и контейнером. В контейнер подгружается 2я. Автообновление 10 секунд.

2я страница - сами сообщения. Уже выстроены в нужном порядке. Новое всегда внизу.

Проблема в том, что никак не могу заставить прокручиваться контейнер вниз, при добавлении нового сообщения.

Код 1й страницы (index.php), с контейнером.
<script type=\"text/javascript\" src=\"jquery.js\"></script>

<script>   
function show()   
{   

$.ajax({   
url: "posts.php",   
cache: false,   
success: function(html){   
$("#content").html(html);   
}   
});   
}   
$(document).ready(function(){   
show();   
setInterval('show()',10000); 


  
});   

</script>


2я страница (posts.php) - отвечает за вывод сообщений пользователей.

Что делал.
1) Добавлял в код 2й страницы скрипт автопрокрутки вниз, при её загрузке.
Результат - при открытии posts.php - страница прокручивается вниз.
При открытии index.php, (с контейнером, указывающим на posts.php) страница не прокручивается.

2) Добавлял в код 2й страницы скрипт автопрокрутки до якоря. Делал якорь в самом низу.
Добавил ссылку.
При щелчке по ссылке - страница прокручивается вниз, до якоря.
При открытии index.php, (с контейнером, указывающим на url: "posts.php#ancor", ) страница не прокручивается.

Подскажите, как решить данную проблему?
Ответить с цитированием
  #2 (permalink)  
Старый 07.06.2013, 12:05
Аватар для Hekumok
Отправить личное сообщение для Hekumok Посмотреть профиль Найти все сообщения от Hekumok
 
Регистрация: 04.06.2012
Сообщений: 513

это
setInterval('show()',10000);

лучше делать так
setInterval(show, 10000) ;
__________________
★ ²º¹³ ☆
Ответить с цитированием
  #3 (permalink)  
Старый 07.06.2013, 12:34
Аспирант
Отправить личное сообщение для useruser Посмотреть профиль Найти все сообщения от useruser
 
Регистрация: 20.01.2013
Сообщений: 34

Сообщение от Hekumok Посмотреть сообщение
это
setInterval('show()',10000);

лучше делать так
setInterval(show, 10000) ;
Согласен, но сути вопроса не меняет.

Нужно автообновление ajax+автопрокрутка
Ответить с цитированием
  #4 (permalink)  
Старый 07.06.2013, 12:45
Аватар для deivan
Профессор
Отправить личное сообщение для deivan Посмотреть профиль Найти все сообщения от deivan
 
Регистрация: 02.08.2012
Сообщений: 293

scrollTop вам в помощь: Автоматическая прокрутка дива вниз
Ответить с цитированием
  #5 (permalink)  
Старый 07.06.2013, 12:58
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от useruser
При открытии index.php, (с контейнером, указывающим на url: "posts.php#ancor", ) страница не прокручивается.
угу . заначит идёт открытие страницы с анкором , в то время как блок с этим анкором подгружается аяксом после загрузки страницы.... не существует для браузера этого блока .
Ответить с цитированием
  #6 (permalink)  
Старый 07.06.2013, 14:36
Аспирант
Отправить личное сообщение для useruser Посмотреть профиль Найти все сообщения от useruser
 
Регистрация: 20.01.2013
Сообщений: 34

Сообщение от deivan Посмотреть сообщение
scrollTop вам в помощь: Автоматическая прокрутка дива вниз
Нет. Не работает. (
Ответить с цитированием
  #7 (permalink)  
Старый 07.06.2013, 14:40
Аспирант
Отправить личное сообщение для useruser Посмотреть профиль Найти все сообщения от useruser
 
Регистрация: 20.01.2013
Сообщений: 34

Сообщение от dmitriymar Посмотреть сообщение
угу . заначит идёт открытие страницы с анкором , в то время как блок с этим анкором подгружается аяксом после загрузки страницы.... не существует для браузера этого блока .
Интересно то, что если убрать с первой страницы аякс и заменить на iframe, то 2я страница с JS кодом автопрокрутки будет отображаться в этом фрейме и автопрокручиваться вниз.
Разумеется, без аякса всё это выглядит ужасно.

А с аяксом не хочет. Хоть якорь используй, хоть другой JS код, на подгружаемой странице.
Ответить с цитированием
  #8 (permalink)  
Старый 07.06.2013, 15:49
Аватар для deivan
Профессор
Отправить личное сообщение для deivan Посмотреть профиль Найти все сообщения от deivan
 
Регистрация: 02.08.2012
Сообщений: 293

а нужен ли и-фрейм вообще?..
я когда-то делал чат, так у меня в диве с чатом все отменно крутилось вниз с помощью скроллТу при каждом добавлении параграфа с обновлениями..
Ответить с цитированием
  #9 (permalink)  
Старый 07.06.2013, 21:17
Аспирант
Отправить личное сообщение для useruser Посмотреть профиль Найти все сообщения от useruser
 
Регистрация: 20.01.2013
Сообщений: 34

Сообщение от deivan Посмотреть сообщение
а нужен ли и-фрейм вообще?..
я когда-то делал чат, так у меня в диве с чатом все отменно крутилось вниз с помощью скроллТу при каждом добавлении параграфа с обновлениями..
Можно код?
Я много не прошу.) И пример у меня простой, в плане кода.
2 файла. Первый с аякс, второй с запросом к бд и выводом сообщений.
Надо чтобы второй файл автообновлялся и прокручивался вниз.

Вот аякс код 1го файла.

<div id="content"></div> 
<script type="text/javascript" src="jquery.js"></script>
<script>   
function show()   
{   
$.ajax({   
url: "posts.php",   
cache: false,   
success: function(html){   
$("#content").html(html);   
}   
});   
}   
$(document).ready(function(){   
show();   
setInterval(show, 10000);  

});   
</script> 
</div>



Вот содержимое второго файла

$sql ="SELECT * FROM (SELECT * FROM `chat_messages` ORDER BY `id` DESC LIMIT 20) as `tmp` ORDER BY `id`";
$result=mysql_query($sql) or die(mysql_error());
$select_amt = mysql_num_rows($result);


for($select_amt; $select_amt>0; $select_amt--)
{.........и далее по тексту )


Всё работает, но как совместить и сделать автопрокрутку не знаю.
Ответить с цитированием
  #10 (permalink)  
Старый 08.06.2013, 20:49
Аспирант
Отправить личное сообщение для useruser Посмотреть профиль Найти все сообщения от useruser
 
Регистрация: 20.01.2013
Сообщений: 34

Up всё ещё актуально.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема в json & ajax okapo Работа 4 02.05.2013 20:56
Проблема с AJAX Dim@ AJAX и COMET 4 16.09.2012 22:52
ajax чат проблема с записью сообщения в базу данных mysql. Niksik AJAX и COMET 4 15.01.2012 14:04
ajax уведомления (проблема) okapo AJAX и COMET 7 04.11.2011 10:56
Проблема с событиями после ajax запроса Mirgorod AJAX и COMET 5 12.06.2010 18:24