Перейти к содержимому


Конкурс "Лучший отзовик"
× Быстрый вопрос
Пользователь месяца
ShowPrint ShowPrint 1-й за Март
Очков активности: 1 152 1 тема, 61 сообщение, 12 баллов репутации
Сайт: ShowPrint.ru
ТОП самых активных за этот месяц
  • Фотография Андрей WPMasterKZ
    #1

    Андрей WPMasterKZ (wpmaster.kz)
    Очков активности: 525 Вне конкурса за определение пользователя месяца

  • Фотография OlgaGetman
    #2

    OlgaGetman
    Очков активности: 351 Вне конкурса за определение пользователя месяца

  • Фотография Vmir
    #3

    Vmir
    Очков активности: 346.5 3 темы, 24 сообщения, 7 баллов репутации

  • Фотография ShowPrint
    #4

    ShowPrint (ShowPrint.ru)
    Очков активности: 204 Вне конкурса за определение пользователя месяца

  • Фотография Mandarin
    #5

    Mandarin
    Очков активности: 76.5 2 темы, 11 сообщений, 3 балла репутации

  • Фотография maxnik
    #6

    maxnik (konovalovpavel.ru)
    Очков активности: 63 1 тема, 18 сообщений, 2 балла репутации

  • Фотография re-search
    #7

    re-search
    Очков активности: 49.5 7 тем, 12 сообщений, 1 балл репутации

  • Фотография Strazh
    #8

    Strazh
    Очков активности: 37.5 1 тема, 22 сообщения, 1 балл репутации

  • Фотография pozitron123
    #9

    pozitron123
    Очков активности: 36 2 темы, 6 сообщений, 2 балла репутации

  • Фотография Constantine
    #10

    Constantine
    Очков активности: 33 3 темы, 13 сообщений, 1 балл репутации

  • Показать весь ТОП 10
Поддержите форум! =)
Апдейты
  • Яндекс ИКС: 27.03.2019
  • Яндекс выдача: 18.04.2019
Топ 5 участников по репутации


Ajax окно чата

#1 Scream

Scream
  • Неактивные
  • 42 сообщений
  • Репутация: 0
0

Отправлено 05 Май 2010 - 14:36

Как на ajax можно реализовать такое, чтоб когда в таблице бд появляется новая запись - чтоб эта запись выводилась как в окне чата.
На пример "Быстрые сообщения" вконтакте. Приходит сообщение - оно появляется под остальными сообщениями.

 

 

  • 0

#2 gaaarfild

gaaarfild
  • Неактивные
  • 596 сообщений
  • Репутация: 0

Отправлено 05 Май 2010 - 15:08

А там должен, я так думаю, таймер стоять, который через определенное время просто обновляет блок или фрейм. В контакте они тоже приходят не мгновенно. Все зависит от периода обновления.
Я прав? Или поправьте меня.
  • 0

#3 reaboom

reaboom
  • Неактивные
  • 40 сообщений
  • Репутация: 0

Отправлено 05 Май 2010 - 18:12

Прав :(


  • 0

#4 Scream

Scream
    Topic Starter
  • Неактивные
  • 42 сообщений
  • Репутация: 0

Отправлено 05 Май 2010 - 20:59

Прав, но как это реализовать через JS не использую iframe?
  • 0

#5 ZiTosS

ZiTosS
  • Неактивные
  • 5 148 сообщений
  • Репутация: 8

Отправлено 08 Май 2010 - 20:41

Scream, Ajax + XML или JSON

1) Ставим запуск функции каждые 30 секунд, можно на основе setInterval()
2) Функция делает запрос на поиск новых сообщений, в качестве параметра она должна передавать на сервер id последнего сообщения которое отображено на странице
3) Получаем ответ от сервера в строго-структурированном формате, либо XML, либо JSON, либо любой другой, который понимает JS.
4) Разбираем ответ посредством JS, он умеет работать с XML и другими форматами. Не забываем из полученных данных занести в глобальную переменную или куда ещё значение id последнего сообщения. Нужно дял последующих сообщений.
4) Добавление сообщения реализуется на DOM-модели или юзаем фреймверки.
  • 0

#6 Scream

Scream
    Topic Starter
  • Неактивные
  • 42 сообщений
  • Репутация: 0

Отправлено 09 Май 2010 - 07:50

ZiTosS, единственная проблема которая меня все это время загоняла в тупик - как у новых сообщений которые мы читаем сменить статус на "прочитано"?
  • 0

#7 ZiTosS

ZiTosS
  • Неактивные
  • 5 148 сообщений
  • Репутация: 8

Отправлено 09 Май 2010 - 17:04

Scream, не очень понял о чем ты. Но я же тебе сказал, что мы всегда будем знать о последнем сообщении, которое мы прочитали за последнее обращение к серверу. Поэтому мы будем знать, что прочитал текущий пользователь, а что ещё нет. Так как JS работает на стороне Клиента, у каждого пользователя последнее прочитанное сообщение будет иметь свой ID и обновляться окно чата будет у каждого в свой отмеченный момент времени.
Не понимаю, с чем у тебя проблема?
  • 0

#8 REiCh

REiCh
  • Неактивные
  • 20 сообщений
  • Репутация: 0

Отправлено 01 Июнь 2010 - 12:59

Scream, Ajax + XML или JSON


Это работает неправельно :) ;) Оно появляется и исчезает ;)
  • 0

#9 gaaarfild

gaaarfild
  • Неактивные
  • 596 сообщений
  • Репутация: 0

Отправлено 02 Июнь 2010 - 08:49

В чате нет понятия "Прочитанные сообщения".
Используй фреймворки. Например в jQuery удобно использовать appendTo. Чтобы добавлять новые строки. А проверять надо не раз в 30 секунд, а раз в 3 секунды через AJAX. И лучше использовать ля передачи JSON. Он быстрее работает.

Схема примерно такая.
Сообщения при отправлении записываются в Базу данных.
В сессии необходимо записывать ID последнего пришедшего сообщения.
AJAX проверяет базу данных. Если есть сообщения после ID, который в сессии, то добавляет с помощью appendTo или appendChild к уже существующим сообщениям строчки.
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Похожие темы

  Название темы Автор Статистика Последнее сообщение

Оформление форума – IPBSkins.ru