Динамичный ajax

Предварительное обсуждение найденных ошибок перед отправкой их авторам фреймворка, а также внесение новых предложений.
Ответить
Аватара пользователя
MOTORIST
Сообщения: 245
Зарегистрирован: 2010.06.24, 10:04

Динамичный ajax

Сообщение MOTORIST »

Всем привет!

Уважаемые Гуру! Напишите рецепт "ajax загрузка формы и отправка данных формы на сервер".

Сама задача по себе не сложная и чтобы реализовать ее большого ума не надо. Но сделать это на Yii без потери времени и использование костылей не представляется возможным.

Основные проблемы с которыми я столкнулся:
1) ajax - валидация
2) двойной submit + увеличение запросов на +1 (решил через .off().Двойной submit остался).
3) дублирование скриптов. Можно решить при помощи Yii::app()->clientscript->scriptMap['jquery.js'] = false, но мне кажется что это не совсем кошерно при каждом renderPartial писать список "off- скриптов".

P.S. тем по данным вопросам очень много.
В сознании новичка много возможностей, в сознании эксперта — лишь несколько.
Аватара пользователя
Koduc
Сообщения: 140
Зарегистрирован: 2011.02.15, 18:56

Re: Динамичный ajax

Сообщение Koduc »

2. Разбираться со скриптами, где-то лишнего навешано. Видимо п.1 из-за этого же (обработчик события вешается два раза). Можно вместо .submit() .click() и подобного использовать .live() - проще будет и всегда работать.
3. В приложение из окон всплывающих слать флаг, например isFancy. Переопределить render в родительском контроллере, который будет проверять этот флаг и делать нужный рендер.

Вообще самое просто решение - отказаться от полностью ajax'овый формы. Открылось окошко формы, заполнили её, засабмитили. Если всё ок - то хорошо, делаем что нам надо. Если возникли ошибки валидации - открываем эту форму отдельно и полноценно. Пример можно увидеть тут: http://re.monoray.ru/ - в верхней менюшке ссылка "Оставить заявку".
Разработка на Yii: monoray.ru
Открытое бесплатное решение для создания сайтов по аренде/продаже недвижимости: Open Real Estate
Аватара пользователя
MOTORIST
Сообщения: 245
Зарегистрирован: 2010.06.24, 10:04

Re: Динамичный ajax

Сообщение MOTORIST »

Эти вопросы возникают не только у меня, но и у многих. Поэтому я и просил Гуру написать, как это реализовать при помощи фреймворка правильно. Я со всем этим справился (кроме двойного submit-а).
2.) проблема в yiiactiveform.js и об этом писали не только на этом форуме (без влезания во фреймворк, решений я не нашел).
3.) прописал ручками в шаблоне. В конфигах запретил загрузку.

P.S. по поводу Вашего решения, не вижу в этой реализации ничего хорошего. Я уже подгрузил форму. Зачем мне ее еще раз грузить, да еще и с редиректом?
В сознании новичка много возможностей, в сознании эксперта — лишь несколько.
Аватара пользователя
Koduc
Сообщения: 140
Зарегистрирован: 2011.02.15, 18:56

Re: Динамичный ajax

Сообщение Koduc »

MOTORIST писал(а):P.S. по поводу Вашего решения, не вижу в этой реализации ничего хорошего. Я уже подгрузил форму. Зачем мне ее еще раз грузить, да еще и с редиректом?
Минусы есть, не спорю. Но в плюсах:
1. Очень легко и быстро реализуется "из коробки";
2. Много раз сталкивался с проблемами в таких формах для всяких хитрых полей (например, разные наборы полей в разных табах, загрузка файлов). С файлами вообще отдельная тема - при неудачной валидации формы, по идее, файлы должны всёравно быть загружены и это должно отразиться в форме (с возможностью удалить эти файлы). Думаю, не мне вам рассказывать, какой это всё гемор при "чистой" ajax-валидации;
3. Standalone форма индексируется поисковиком и доступна по прямому урлу в полноценном дизайне сайта;
Разработка на Yii: monoray.ru
Открытое бесплатное решение для создания сайтов по аренде/продаже недвижимости: Open Real Estate
maxxdev
Сообщения: 40
Зарегистрирован: 2011.12.12, 13:27

Re: Динамичный ajax

Сообщение maxxdev »

Koduc писал(а):
MOTORIST писал(а):P.S. по поводу Вашего решения, не вижу в этой реализации ничего хорошего. Я уже подгрузил форму. Зачем мне ее еще раз грузить, да еще и с редиректом?
Минусы есть, не спорю. Но в плюсах:
3. Standalone форма индексируется поисковиком и доступна по прямому урлу в полноценном дизайне сайта;
Присоединяюсь к вопросу MOTORIST.
Для форм авторизации, регистрации, восстановления пароля индексация не нужна, поля простые и именно для таких простых форм интересует грамотная реализация без сопутствующих проблем описанных автором топика.
Безусловно в сложных формах чистая ajax валидация может принести немало головной боли разработчику...
Ekstazi
Сообщения: 1428
Зарегистрирован: 2009.08.20, 22:54
Откуда: Молдова, Бельцы
Контактная информация:

Re: Динамичный ajax

Сообщение Ekstazi »

Двойной сабмит может быть из-за того CActiveForm при саюмите повторно валидирует форму. То есть не совсем двойной сабмит. У себя подобных проблем не наблюдал. Разве что с дублированием скриптов по аякс.
Ответить