@aolko

Ajax форма на Битрикс?

Привет, я пишу ajax форму на битриксе и у меня возник вопрос - как можно обновить данные формы не скрывая её и не перезагружая страницы? Код js составляющей
p.s. почему-то не работает e.preventDefault();
upd: Попап окно (jquery) в котором находится форма - изменённый шаблон стандартного компонента формы, если подключать обычным образом форму с битрикс аяксом, страница будет перезагружаться после отправки данных формы и тогда пользователю придётся снова открывать форму (по умолчанию скрыта) ради того чтобы посмотреть сообщения битрикса (ошибки/отправлено), так быть не должно. Аякс должен работать непосредственно в попапе без перезагрузки страницы.

должно быть примерно так:
WsVP4S2.png
  • Вопрос задан
  • 11674 просмотра
Решения вопроса 1
tomgif
@tomgif
Веб-разработчик
Заворачиваете форму в компонент.
Сама форма располагается в шаблоне (/templates/.default/template.php). Обработчик в component.php.
При запросе страницы с параметром (к примеру ajax=yes) отдаете компонент без шапки и подвала

...
if ($_REQUEST["ajax"] && ($_REQUEST["ajax"] == "yes")) {
	$APPLICATION->RestartBuffer();
	$this->IncludeComponentTemplate();
	die();
} else {
	$this->IncludeComponentTemplate();
}


В своем js, обязательно!, делаете e.preventDefault() сабмита формы, а не клика на кнопку. Биндите новый обработчик клика на кнопку (ajax запрос на эту же страницу с параметром ajax=yes)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Logic87
@Logic87
Программист/администратор сайтов на 1С-Битрикс.
А почему пишете с нуля?
Воспользуйтесь стандартным компонентом Веб-формы и в параметрах компонента допишите:
AJAX_MODE=>"Y"
Тем самым вы включите стандартную обработку формы аяксом битрикса.
Ответ написан
Serg89
@Serg89
Изучаю. Читаю.
Аналогичная проблема стоит для редакции "Старт". Сам еще не реализовал, но могу вам предложить сделать компонент формы, у которой action будет вести на текущую страницу. Тем самым, когда ajax-запрос дойдет до нужного куска страницы(то есть до текущего компонента), вы очищаете буфер и возвращаете результат пользователю. Необходимо продумать только идентификацию формы : id формы + текущий шаблон.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы