Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Функция для подгрузки сообщений. Ajax.Php.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Как проверить есть ли новые сообщения и если есть, то показать их.
SidneyShow
Отправлено: 16 Сентября, 2016 - 23:31:58
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Апр. 2016  


Помог: 0 раз(а)




Здравствуйте, помогите пожалуйста разобраться.

Вообщем есть страница с чатом для двух пользователей(примерно как в ВК). На этой странице есть javascrippt функция, которая отвечает за подгрузку новых сообщений в определенный div и вызывается раз в 3 секунды, выглядит эта функция следующим образом:

function Load() {
$.ajax({
url: "/ajax.php",
type: "POST",
cache: false,
data: {"CHAT": CHAT},
success: function(html){
if(html != 0){
$("#Message").html(html);
}
}
});
}

Скрипт-обработчик к которому обращается данная функция, извлекает из БД сообщения.

Хоть данная функция и работает, но она делает это не совсем правильно, так как вызывается она непрерывно каждые 3 секунды и следовательно div в который подгружается все это дело тоже обновляется каждые 3 секунды.

Как можно реализовать примерно следующее:

javascript функция посылает запрос к php-скрипту, который извлекает сообщения и извлекает номер последнего сообщения и направляет "обратно" в javascript функцию и здесь на этапе "success:" проверяется есть ли новое сообщение, если есть то обновляет div, если нет, то не обновляет. Можно ли это реализовать на этапе "success:"?
 
 Top
T1grOK
Отправлено: 17 Сентября, 2016 - 14:16:37
Post Id



Частый гость


Покинул форум
Сообщений всего: 129
Дата рег-ции: Июнь 2013  


Помог: 7 раз(а)




Держать на клиенте максимальный id сообщения, слать его в ajax, а на бэкенде искать сообщения больше присланного id. И соответственно, если новые сообщения есть, шлем сообщения на клиент, где выполняем необходимые действия, в том числе и обновляем максимальный id.


-----
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
 
 Top
SidneyShow
Отправлено: 18 Сентября, 2016 - 14:31:38
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Апр. 2016  


Помог: 0 раз(а)




T1grOK пишет:
Держать на клиенте максимальный id сообщения, слать его в ajax, а на бэкенде искать сообщения больше присланного id. И соответственно, если новые сообщения есть, шлем сообщения на клиент, где выполняем необходимые действия, в том числе и обновляем максимальный id.


Вы абсолютно верно поняли что я хочу сделать. Но я не совсем понимаю как можно вернуть id из ajax запроса обратно к пользователю и как его хранить. Не могли бы Вы привести пример того, как это можно реализовать, если Вам не сложно?
 
 Top
SidneyShow
Отправлено: 04 Октября, 2016 - 20:12:44
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Апр. 2016  


Помог: 0 раз(а)




Вообщем разобрался как можно из php-скрипта передать переменную со значением клиенту. В этом случае можно использовать глобальную переменную JavaScript.
В самом php-скрипте достаточно где-нибудь в конце дописать следующее:

echo '
<script type="text/javascript">
window.last_message_id = '.$last_message_id.';
//$last_message_id - можете использовать любую переменную из php скрипта
</script>
';

И если в ajaxe использовать функцию success: function(html), присланная от php-скрипта глобальная переменная JavaScript обновиться, прямо на стороне клиента. И потом ее(уже обновленную) можно снова передавать клиенту!

Сам с этим долго возился, может кому поможет Улыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB