Я сделал блок, в котором выводят онлайн юзеров. JS каждые 2 секунды посылает запрос к БД, и вытаскивает юзеров. Далее JS запихивает юзеров в таблицу, а эту таблицу в блок с онлайн юзерами. Тут проблем нет. Щас будем подбираться к проблеме поближе. По клику на онлайн юзера, под этим юзером вылазит форма и история переписки, но сразу же исчезает. Думаю догадались почему))) Потому что JS обновил блок с онлайн юзерами при возвращении из запроса юзеров. Как мне сделать так, что бы и юзеры выводились, и каждые 2 секунды форма и история переписки не исчезала?
N0ob вынести форму в отдельный внешний независящий от списка онлайн div
Игорь_Vasinsky
28.10.2013 - 07:25
best answer!
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
inpost
28.10.2013 - 15:16
N0obотдельными блоками хранить переписку и пользователей.
_____________
Обучаю веб-программированию качественно и не дорого:
http://school-php.comФрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
inpost, Guest в том то и дело, что так нельзя. Я вывожу список юзеров онлайн. В этих списках, так же есть сама история переписки и форма для ввода сабжа. При клике на юзера, эта история и переписка показывается(а так она скрыта). Отдельно это никак не сделать. Хотел сделать как в ВК, но не мне немного не понравилось)
Игорь_Vasinsky
28.10.2013 - 21:38
ты обновляешь содержимое элемента - что ты хотел?))
записывай позицию содерижмого, состояния открытых диалогов на клиенте
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Щас переварю все что ты сказал, и попробую сделать)))
Игорь_Vasinsky
28.10.2013 - 21:51
вообще может даже json или сериализованный массив с настройками этими гонять на сервер и обратно
при выводе ловить всё и рисовать как надо
а вообще - сессии или куки наверно - чем гонять данные туда-сюда
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
inpost
28.10.2013 - 22:17
N0obты данные храни не в блоке, а в массиве. А в блок выводи данные. Клик - вывод данных из массива. Так как аякс у тебя изменит лишь массив с юзерами, то массив с сообщениями трогать не будет.
В целом, надо разделять данные, а не превращать всё в общую кашу.
_____________
Обучаю веб-программированию качественно и не дорого:
http://school-php.comФрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Игорь_Vasinsky
28.10.2013 - 22:20
да, мне тоже этот вариант больше нравится
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
inpost я думаю вот как. При выборке записать все id юзеров в массив, и так же записать id с тем, с кем я переписываюсь. При повторном запросе мы сравниваем id который вернул запрос, и id которые мы записали в массив. Если в массиве нету id тех юзеров, которые есть в массиве из предыдущего запроса, значит эти юзеру офнулись и мы удаляем их из списка, ну а если офнулся и тот, с кем я переписывался, просто указать что он офнулся, но не сворачивать диалог. Далее мы просто перепроверяем массив с текущего запроса и опять же с тем, который вернулся к нам из прошлого запроса. А проверяем мы его на новых юзеров. Вдруг кто то зашел, и так же обновляем список, не трогая активный диалог(если есть таковой). Как вам?
Сложно словить мысль. Реализуй и посмотри как работает.
_____________
Обучаю веб-программированию качественно и не дорого:
http://school-php.comФрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
К примеру у тебя получился такой блок с пользователями:
<div id="messageUser"></div>
<div id="online">
<div onClick="message(`id1`)">Логин 1</div>
<div onClick="message(`id2`)">Логин 2</div>
<div onClick="message(`id3`)">Логин 3</div>
</div>
При клике на логин выполняется ф-ция, которая через ajax делает запрос в бд и выводит тебе переписку с данным пользователем в <div id="messageUser"></div>
При обновлении Онлайн пользователей обновится только блок <div id="online"></div>, а переписка так и останется открытой, т.к. блок <div id="messageUser"></div> не изменится
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.