MrXaK Свободен |
09-12-2006 - 19:26 отелось бы как-нибудь осуществить посылку формы со страницы без перегрузки страницы например как сделано в некоторых версиях ИПБ когда быстрый ответ сразу добавляется на страницу... пробовал xajax (http://www.xajaxproject.org/) но их скрипты не работает в Опере... читал доки по JsHttpRequest, но немного не понял) если объясните буду рад или ещё какие-нибудь методы подскажите... |
||||
Аrtur Свободен |
09-12-2006 - 20:53 Что именно не понятно по JsHttpRequest? |
||||
Flameberg2 Свободен |
10-12-2006 - 12:46 Ну, для начала хотелось бы уточнить, что в IPB не прокатит описанный вариант с моментальным добавлением ответа на страницу: он сначала пишется БД, а потом уже по запросу из БД вытягивается что же до твоей проблемы, то решаема она, например, с помощью аякса. Только я ща болею, и доки искать лень ))) |
||||
MrXaK Свободен |
10-12-2006 - 18:28 Flameberg2 говорю ж, xajax что видел, в опере не работает... Аrtur как я разобрал примеры, в обработчике всегда формируется массив $_REQUEST, а в той странице что посылала и куда добавлять, выводится используя req.responseJS. а вот вопрос... допустим после посылки формы что-то пихается в бд, то что в бд выводится на самой страницы... если отправляют одновременно 2 юзера, один чуть раньше, 2й чуть позже, то как сделать чтобы 2й после посылки своей формы увидел что послал 1й... |
||||
Marilyn Omen Свободен |
10-12-2006 - 21:22
Или req.responseText. responseJS формируется как ассоциативный массив, а responseText - это любой вывод бэк-енд скрипта (echo, print).
На примере комментариев. Фронт-енд скрипт выводит комментарии, и форму для добавления нового коммента. По нажатии на кнопку "Добавить" JavaScript формирует и посылает запрос бэк-енд скрипту, используя тот же JsHttpRequest. Бэк-енд скрипт принимает данные, добавляет в базу новый комментарий, и делает такой же запрос, как и фронт-скрипт - для вывода комментов, и возвращает это все назад. Java-скрипту остается только заменить комментарии на странице теми, что пришли после запроса - там будет и только что добавленный, и те, что добавились раньше него. Запутано написал) Но примерная логика такая. |
||||
MrXaK Свободен |
10-12-2006 - 22:16 хм... ясно... хотя я ща думал, хотел немного по-другому сделать... бесконечный цикл на странице (while( true )), внутри цикла с какой-то задержкой (sleep) чтение из бд, вывод новых использую flush()... а форма посылается и бэк-энд скрипт просто добавляет в бд... какой способ лучше? )) |
||||
Marilyn Omen Свободен |
10-12-2006 - 22:22
Не ну бесконечный цикл это уже плохо, так делать нельзя. Тем более это приведет к большей нагрузке на БД (если допустим каждых 5 сек будет посылаться запрос... а пользователь не один, а БД юзает не только этот скрипт...), тогда как в описанном варианте запрос идет после добавления в БД, чтоб достать обновленные данные. |
||||
MrXaK Свободен |
10-12-2006 - 23:39 вообще я собирался писать чат, только полностью без фреймов... так что в любом случае нагрузка на бд будет какая-то) |
||||
Marilyn Omen Свободен |
10-12-2006 - 23:49
у, ну тады другое дело В цикле обновлять чат раз в N секунд, понял. Пиши, удачи тебе в этом деле. Единственное, что я бы еще посоветовал - позволить настраивать пользователю частоту обновления чата, чтоб он сам мог выбрать - 5 сек, 10 сек или там 1 минута. Инет у всех разный) |
||||
Свободен |
12-12-2006 - 15:04
примерно так это должно работать... |
||||
Flashick Свободен |
16-12-2006 - 02:28 Лезем в гугл и ищем тама слова "ajax руководство" |