MrXaK | ||||
отелось бы как-нибудь осуществить посылку формы со страницы без перегрузки страницы например как сделано в некоторых версиях ИПБ когда быстрый ответ сразу добавляется на страницу... пробовал xajax (http://www.xajaxproject.org/) но их скрипты не работает в Опере... читал доки по JsHttpRequest, но немного не понял) если объясните буду рад или ещё какие-нибудь методы подскажите... |
||||
Аrtur | ||||
Что именно не понятно по JsHttpRequest? | ||||
Flameberg2 | ||||
Ну, для начала хотелось бы уточнить, что в IPB не прокатит описанный вариант с моментальным добавлением ответа на страницу: он сначала пишется БД, а потом уже по запросу из БД вытягивается ![]() что же до твоей проблемы, то решаема она, например, с помощью аякса. Только я ща болею, и доки искать лень ))) |
||||
MrXaK | ||||
Flameberg2 говорю ж, xajax что видел, в опере не работает... Аrtur как я разобрал примеры, в обработчике всегда формируется массив $_REQUEST, а в той странице что посылала и куда добавлять, выводится используя req.responseJS. а вот вопрос... допустим после посылки формы что-то пихается в бд, то что в бд выводится на самой страницы... если отправляют одновременно 2 юзера, один чуть раньше, 2й чуть позже, то как сделать чтобы 2й после посылки своей формы увидел что послал 1й... |
||||
Marilyn Omen | ||||
Или req.responseText. responseJS формируется как ассоциативный массив, а responseText - это любой вывод бэк-енд скрипта (echo, print).
На примере комментариев. Фронт-енд скрипт выводит комментарии, и форму для добавления нового коммента. По нажатии на кнопку "Добавить" JavaScript формирует и посылает запрос бэк-енд скрипту, используя тот же JsHttpRequest. Бэк-енд скрипт принимает данные, добавляет в базу новый комментарий, и делает такой же запрос, как и фронт-скрипт - для вывода комментов, и возвращает это все назад. Java-скрипту остается только заменить комментарии на странице теми, что пришли после запроса - там будет и только что добавленный, и те, что добавились раньше него. Запутано написал) Но примерная логика такая. |
||||
MrXaK | ||||
хм... ясно... хотя я ща думал, хотел немного по-другому сделать... бесконечный цикл на странице (while( true )), внутри цикла с какой-то задержкой (sleep) чтение из бд, вывод новых использую flush()... а форма посылается и бэк-энд скрипт просто добавляет в бд... какой способ лучше? )) |
||||
Marilyn Omen | ||||
Не ну бесконечный цикл это уже плохо, так делать нельзя. Тем более это приведет к большей нагрузке на БД (если допустим каждых 5 сек будет посылаться запрос... а пользователь не один, а БД юзает не только этот скрипт...), тогда как в описанном варианте запрос идет после добавления в БД, чтоб достать обновленные данные. |
||||
MrXaK | ||||
вообще я собирался писать чат, только полностью без фреймов... так что в любом случае нагрузка на бд будет какая-то) | ||||
Marilyn Omen | ||||
у, ну тады другое дело В цикле обновлять чат раз в N секунд, понял. Пиши, удачи тебе в этом деле. Единственное, что я бы еще посоветовал - позволить настраивать пользователю частоту обновления чата, чтоб он сам мог выбрать - 5 сек, 10 сек или там 1 минута. Инет у всех разный) |
||||
|
||||
Flashick | ||||
Лезем в гугл и ищем тама слова "ajax руководство" |