Формы, Аякс и ошибки

MpakFM

Новичок
Формы, Аякс и ошибки

Значится так. Имеет место быть набор форм выдаваемых юзеру последовательно. Одна после другой. Между ними идет обработка. Кроме того база данных дополнительная находится в другом месте и запросы к ней передаются методом GET ответ получаю в виде xml файла. Сейчас парсю его средствами simplexml (php5).
Периодически получаю ответ - база не доступна, и другие ошибки самой удаленной базы.
И нужно вернуть предыдущую форму юзеру.
Сейчас формы показываются средствами Аякс (xajax). Формы динамические в них еть данный которые генерятся прям на сервере, но простоые пока типа даты сегодня и имени авторизованного юзера

Теперь собственно проблема. Мне надо каким то образом показывать предыдущие формы при откатах назад. Да и когда формы сами показываешь то их тоже весь код кладешь в функции для Аякса.
И вот думаю а может лучше их (формы) сделать как шаблоны. сделать небольшой шаблонизатор с парсером и вызывать эти формы уже в Аяксе когда необходимо?
Но что то держит. Вот решил спросить стоит ли или есть какой то другой путь?
Если что не понятнот спросите - объясню. Язык мой коряв и мог написать путанно.
 

denver

?>Скриптер
Вместо HTML кода всей формы посылаешь только JS массив: имя поля, значение поля, ошибка ввода. Формы создаешь через JS, если есть ошибки ввода выводишь напротив поля красненьким.
 

MpakFM

Новичок
это я знаю. Фишка в откате через некоторое время.
вот как происходит:
Юзер видит форму. Вводит данные. они проверяются Аяксом на то что могу проверить по своей базе.
После идет отправка в этот момент юзеру показывается картинка в стиле "Ждите ответа"
Идет обработка запроса к удаленной базе и тут надо либо показать новую форму, либо сформировать сообщение об ошибке и вернуть старую форму.
 

denver

?>Скриптер
Ну и отсылай старую форму с введенными данными и ошибками. Это ж уже PHP.
 

MpakFM

Новичок
где её взять то старую форму?? она была в предыдущей функции.
вот я и думаю - ставить шаблоны для форм что бы не маятся с формами в каждой функции или есть какой то другой путь более красивый....
сейчас вот такЖ
файл аякс-сервер:
1. включение коммона общего
2. включение коммона аякса
набор функций
стандартная функция реагирования на форму:
объявляем глобально объекты необходимые
Проверки на валидность некоторых данных если что показ добавление алертов и возварт объекта xml
Запрос к удаленной базе
если есть ошибка возврат назад (не написан)
если все ок парсинг ответа из xml в объект simplexml
в виде обычной текстовой переменной пишется форма. типа:
$sRequestText .= '<tr onmouseover="this.className=\'overed\'" onmouseout="this.className=\'\'"> ит.д. ';
вот в эту переменную и вствляются данные пришедшие из удаленной базы.
Часто используются циклы так как данные идут строками типа озврат списка чего либо и нужно в форму весь этот список воткнуть с чекбосками или радоибаттонами для отмеки.

Потом эта переменая вместе с сформированной формой отдается объекту xml ксаякса на возврат.
Вот мне не нравится что каждую форму я так описываю и если делать возврат на них нужно опять их описывать.
 

denver

?>Скриптер
Использование xajax это обязательное условие?
Проверки на валидность некоторых данных если что показ добавление алертов и возварт объекта xml
Запрос к удаленной базе
если есть ошибка возврат назад (не написан)
А чего при проверке на валидность можно сделать возврат формы в браузер, а после запроса к удаленной уже нельзя?
 

MpakFM

Новичок
в принципе нет, а какие есть предложения?

-~{}~ 02.08.06 11:58:

при проверке у себя форма ещё показывается юзеру, а вот когда все свои проверки прошли - доли секунду это же Аякс и нет перезагрузок и нужно делать коннект к удаленной и тормозной базе, то юзеру показывается картинка ВМЕСТО вормы в стиле "Ждите ответа" и вот если нужен возврат то надо опять выводить форму вместо картинки.
Можно обойти это и поставить надпись типа "Ожидайте" в отдельное место, но её опять же надо сстирать потом. Да и формы останутся в текстовых переменных. - некрасиво.
Хочется изящного решения. А это костылек какой-то...

Кароче )) вопрос один - делать шаблонизатор для форм или можно пойти другим красивым путем, если другим то каким?
 

whirlwind

TDD infected, paranoid
Если клиентский контроллер оринтирован на содержимое, то
кешировать ответы после получения формы (или перед отправкой по специфике)

Если клиентский контроллер ориентирован на данные - паттерн Command.

Если клиентский контроллер ориентирован на кашу - пересматривать дизайн.
 

Black Raven

Новичок
что тебе мешает скрывать дивы/формы вместо их удаления при отправке данных?

сервер сказал что все ок - грохнем элемент, сказал что фигово - показываем...
 

MpakFM

Новичок
то етсь вот так сделать:
див-ошибок
тут текст ошибок - скрыть
див1
форма один - показывать
див2
форма два - скрыта
див3
форма три - скрыта
див4
форма четыре - скрыта

а функция будет тока указывать скрыть или показать формы плюс при необходимости выводить дим ошибок
Я правильно понял логику?

-~{}~ 02.08.06 14:12:

но ведь форму мне нужно не только показать но и воткнуть туда некоторые пришедшие данные...

-~{}~ 02.08.06 14:18:

Автор оригинала: whirlwind
Если клиентский контроллер оринтирован на содержимое, то
кешировать ответы после получения формы (или перед отправкой по специфике)

Если клиентский контроллер ориентирован на данные - паттерн Command.

Если клиентский контроллер ориентирован на кашу - пересматривать дизайн.
А можно по подробнее?..
неврубился ни во что. слова "Клиентский контроллер", "паттерн Command" вызывают полное непонятие.
И ещё чем отличается "оринтирован на содержимое" от "ориентирован на данные"?
 

whirlwind

TDD infected, paranoid
на содержимое - это когда можно обойтись IFrame
на данные - это когда JS обрабатывает данные (XML,JSON) полученные от сервера

есть еще ориентированные на сценарий - когда скрипт принимает сценарий, который необходимо выполнить

вообще все это есть в недавно вышедшей книге "AJAX в действии"
 
Сверху