Отправка формы без перезагрузки страницы

MrXaK
12/9/2006, 9:26:30 PM
отелось бы как-нибудь осуществить посылку формы со страницы без перегрузки страницы
например как сделано в некоторых версиях ИПБ когда быстрый ответ сразу добавляется на страницу...

пробовал xajax (https://www.xajaxproject.org/) но их скрипты не работает в Опере...

читал доки по JsHttpRequest, но немного не понял) если объясните буду рад

или ещё какие-нибудь методы подскажите...
Аrtur
12/9/2006, 10:53:40 PM
Что именно не понятно по JsHttpRequest?
Flameberg2
12/10/2006, 2:46:40 PM
Ну, для начала хотелось бы уточнить, что в IPB не прокатит описанный вариант с моментальным добавлением ответа на страницу: он сначала пишется БД, а потом уже по запросу из БД вытягивается wink.gif

что же до твоей проблемы, то решаема она, например, с помощью аякса. Только я ща болею, и доки искать лень )))
MrXaK
12/10/2006, 8:28:31 PM
Flameberg2
говорю ж, xajax что видел, в опере не работает...

Аrtur
как я разобрал примеры, в обработчике всегда формируется массив $_REQUEST, а в той странице что посылала и куда добавлять, выводится используя req.responseJS.
а вот вопрос... допустим после посылки формы что-то пихается в бд, то что в бд выводится на самой страницы... если отправляют одновременно 2 юзера, один чуть раньше, 2й чуть позже, то как сделать чтобы 2й после посылки своей формы увидел что послал 1й...
Marilyn Omen
12/10/2006, 11:22:45 PM
(MrXaK)в той странице что посылала и куда добавлять, выводится используя req.responseJS
Или req.responseText.
responseJS формируется как ассоциативный массив, а responseText - это любой вывод бэк-енд скрипта (echo, print).
(MrXaK)а вот вопрос... допустим после посылки формы что-то пихается в бд, то что в бд выводится на самой страницы... если отправляют одновременно 2 юзера, один чуть раньше, 2й чуть позже, то как сделать чтобы 2й после посылки своей формы увидел что послал 1й...
На примере комментариев.
Фронт-енд скрипт выводит комментарии, и форму для добавления нового коммента. По нажатии на кнопку "Добавить" JavaScript формирует и посылает запрос бэк-енд скрипту, используя тот же JsHttpRequest. Бэк-енд скрипт принимает данные, добавляет в базу новый комментарий, и делает такой же запрос, как и фронт-скрипт - для вывода комментов, и возвращает это все назад. Java-скрипту остается только заменить комментарии на странице теми, что пришли после запроса - там будет и только что добавленный, и те, что добавились раньше него.

Запутано написал) Но примерная логика такая.
MrXaK
12/11/2006, 12:16:09 AM
хм... ясно...
хотя я ща думал, хотел немного по-другому сделать... бесконечный цикл на странице (while( true )), внутри цикла с какой-то задержкой (sleep) чтение из бд, вывод новых использую flush()...
а форма посылается и бэк-энд скрипт просто добавляет в бд...

какой способ лучше? ))
Marilyn Omen
12/11/2006, 12:22:39 AM
(MrXaK)бесконечный цикл на странице (while( true )), внутри цикла с какой-то задержкой (sleep) чтение из бд
Не ну бесконечный цикл это уже плохо, так делать нельзя.
Тем более это приведет к большей нагрузке на БД (если допустим каждых 5 сек будет посылаться запрос... а пользователь не один, а БД юзает не только этот скрипт...), тогда как в описанном варианте запрос идет после добавления в БД, чтоб достать обновленные данные.
MrXaK
12/11/2006, 1:39:27 AM
вообще я собирался писать чат, только полностью без фреймов... так что в любом случае нагрузка на бд будет какая-то)
Marilyn Omen
12/11/2006, 1:49:35 AM
(MrXaK @ 10.12.2006 - время: 22:39) вообще я собирался писать чат, только полностью без фреймов... так что в любом случае нагрузка на бд будет какая-то)
у, ну тады другое дело
В цикле обновлять чат раз в N секунд, понял.
Пиши, удачи тебе в этом деле.

Единственное, что я бы еще посоветовал - позволить настраивать пользователю частоту обновления чата, чтоб он сам мог выбрать - 5 сек, 10 сек или там 1 минута. Инет у всех разный)
DELETED
12/12/2006, 5:04:59 PM
(MrXaK @ 11.12.2006 - время: 01:39) вообще я собирался писать чат, только полностью без фреймов... так что в любом случае нагрузка на бд будет какая-то)
примерно так это должно работать...
Flashick
12/16/2006, 4:28:07 AM
Лезем в гугл и ищем тама слова "ajax руководство"