Jquery форма обратной связи: Форма обратной связи на PHP и Ajax

Содержание

Php форма обратной связи без перезагрузки

Всем — привет. Сегодня решил взяться за переработку статьи об ajax форме, которая открывалась в модальном окне. Статья достаточно популярна, но имела некоторые проблемы. Дело в том, что после отправки данных, выводилось сообщение об успешной отправке и не позволяло больше отправлять письма до перезагрузки страницы. Многие из вас спрашивали, как сделать так, чтобы сообщение не заменяло форму и позволяло повторно отправлять письма. В этой статье мы это исправим и не только.

Еще, у прошлой статьи был, наверное, недостаток в том, что сложно было подключить несколько форм, а именно, нужно было дублировать скрипт, обрабатывающий форму, что не очень красиво. В этой статье поправим и этот момент. Кроме того, форма будет работать и без модального окна.

Ах да, приведу в порядок айдишники и классы, чтобы легче понималось что и зачем. Изменю дизайн формы, так интереснее. В одной из следующих статей, возможно, подключим к этой форме reCapthсa от Google, и настроем цель «Событие», при успешной отправке, так что готовится целый цикл статей.

Как сделать форму обратной связи в модальном окне

Давайте приступим. Так как модальное окно будет вызываться при помощи jQuery плагина Remodal, то перед закрывающимся тегом

Обратная связь на сайте, перезагружающая страницу после каждой успешной отправки — мелочь, которая легко портит впечатление о сайте. Качественный сайт подобных «дырок» содержать не должен, потому разберём простой пример формы с асинхронной отправкой данных (без перезагрузки страницы) через AJax и JQuery.

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

  • не дезориентирует пользователя ненужной перезагрузкой страницы или редиректом,
  • позволяет ему продолжить навигацию по текущей странице,
  • снижает нагрузку на сервер,
  • работает приятней и «плавнее».

Как отправить форму без перезагрузки всей страницы? Просто отправлять нужные данные на сервер отдельными запросами, не затрагивая html.

AJAX + PHP + JQuery

Обычно «фидбэк» состоит из HTML-разметки, простенького скрипта, отправляющего данные на сервер и PHP-обработчика этих данных. В случае с фоновой отправки нам понадобится настроить ассинхронную отправку данных к обработчику. Самая простая связка для форм без перезагрузки страницы это PHP + Ajax.

Итак, чтобы отправить форму без перезагрузки дополнительно понадобится:

  • ajax-запрос — функция JavaScript, делающая асинхронную отправку введённых в форму данных к обработчику.
  • PHP-обработчик на сервере, который асинхронно обрабатывает переданные ему Ajax’ом данные. После обработки посылает скрипту ответ с результатом, Вам — заявку.
  • JQuery — библиотека для работы с JavaScript. При создании ajax-формы удобнее пользоваться ей, как и при работе с JS во многих других случаях.

Функцию Ajax можно использовать не только создания форм, но и для других задач, например для динамической подгрузки новостей на странице.

Готовая схема выглядит так:

Пользователь нажатием кнопки отправляет данные

файл JS отправляет их в PHP через Ajax, функцию JQuery

обработчик.PHP проверяет данные и возвращает пользователю через тот же скрипт сообщение об ошибке или успехе

в первом случае владелец сайта также получает готовую заявку.

Если необходимо исключить вероятность повторной отправки формы, ее можно скрыть.

Инструкция по созданию формы без перезагрузки

Прежде всего подключаем JQuery — вставляем строку в конце head сайта (перед тегом ).

Делаем простую форму (в тегах закрыты комментарии к коду, их желательно удалить):

Если вывод формы нужен на одной странице, просто вставляем в код . Если вывод нужен по всему сайту или на многих страницах — вышеописанный код вставляется в шаблон.

Собираем Java-Script. Его, можно добавить вместе с HTML кодом выше или загрузить отдельным файлом без первой или отдельной строки.

Обработчик, в JS элементе выше мы уже назвали его formx.php:

Файл formx.php закидываем в корневой каталог сайта (или прописываем соответствующий путь в url: нашего скрипта. JS-код размещается либо в head страницы, либо вместе с html.

Как видите, всё довольно просто — сделав всё в точности по инструкции, Вы получите простую, но рабочую форму на JQuery без перезагрузки страницы. Если что-то не получилось — задавайте вопросы в комментариях ниже, мы поможем.

Асинхронная отправка — далеко не всё что потребуется сделать, если Вам нужна крутая и красивая форма без перезагрузки страницы. Обязательно придётся подключать стили оформления, настраивать скрытие отправленной формы, показа сообщений об успехе/отказе. Не говоря уже о валидации полей, масках полей, интеграциях с CRM, отправке достижения целей в метрику и настройке капчи.

Зато всё это делается в нашем конструкторе форм буквально в пару кликов и совершенно бесплатно (да, бывает и так).

Я много видел разных мудреных реализаций форм обратной связи в Интернете и думаю, что даже заядлый программист не сразу разберется в работе такого кода. А зачем, собственно говоря, усложнять работу, если все можно сделать как никогда просто, не так ли?

Сегодня я хотел бы показать самую простую и на 100% рабочую реализацию формы обратной связи без перезагрузки страницы с использованием технологии AJAX (jQuery) и обработки/отправки данных на PHP.

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

Технология AJAX, если вы еще не знаете, позволяет без перезагрузки страницы передать значения в PHP-скрипт (и не только), где, уже приняв эти данные, можно произвести необходимые операции.

Если вы не сильно разбираетесь в сайтостроении или только начали освоение этой темы и нуждаетесь в добавлении одного из перечисленный функционалов – пишите об этом в комментариях, постараюсь помочь.

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

Поскольку для отправки формы мы будем использовать PHP, то не стоит делать акцент на том, что на вашем хостинге должна быть его поддержка.

1. Первым делом сверстаем форму с нашими полями. CSS-стили мы упустим, так как сейчас нам это не так важно. В качестве полей сделаем «Имя», «E-mail» и поле для ввода сообщения:

Обратите внимание на элемент с классом «result» – в него мы будем выводить сообщения об ошибках или успешном отправлении сообщения.

2. Далее пишем скрипт, который соберет все данные с формы и отправит их в наш PHP-обработчик:

Скрипт вставляем перед закрывающим тегом

Форма обратной связи на PHP и jQuery с использованием Ajax

  • Главная
  • ->
  • Материалы
  • ->
  • Форма обратной связи на PHP и jQuery с использованием Ajax

Reg.ru: домены и хостинг

Крупнейший регистратор и хостинг-провайдер в России.

Более 2 миллионов доменных имен на обслуживании.

Продвижение, почта для домена, решения для бизнеса.

Более 700 тыс. клиентов по всему миру уже сделали свой выбор.

Перейти на сайт->

Бесплатный Курс «Практика HTML5 и CSS3»

Освойте бесплатно пошаговый видеокурс

по основам адаптивной верстки

на HTML5 и CSS3 с полного нуля.

Начать->

Фреймворк Bootstrap: быстрая адаптивная вёрстка

Пошаговый видеокурс по основам адаптивной верстки в фреймворке Bootstrap.

Научитесь верстать просто, быстро и качественно, используя мощный и практичный инструмент.

Верстайте на заказ и получайте деньги.

Получить в подарок->

Бесплатный курс «Сайт на WordPress»

Хотите освоить CMS WordPress?

Получите уроки по дизайну и верстке сайта на WordPress.

Научитесь работать с темами и нарезать макет.

Бесплатный видеокурс по рисованию дизайна сайта, его верстке и установке на CMS WordPress!

Получить в подарок->

*Наведите курсор мыши для приостановки прокрутки.


Назад
Вперед

Форма обратной связи на PHP и jQuery с использованием Ajax

Практически на каждом сайте есть форма обратной связи. Формы обратной связи используются как на огромных порталах, так и на сайтах-визитках, состоящих буквально из нескольких страниц.

В данном видеоуроке мы разберем установку и настройку специального скрипта формы обратной связи, который работает на PHP и jQuery с использованием технологии Ajax.

Среди особенностей и преимуществ данного решения разработчики выделяют следующие моменты:

— использование проверочного кода (captcha) для защиты от спама

— возможность отправлять сообщения на различные адреса в зависимости от темы сообщения

— встроенная валидация полей (проверка на корректность введенных данных)

— структурированный и четкий PHP-код

— гибкость в настройке получаемого сообщения

— для хранения настроек используются XML-файлы, что облегчает конфигурирование скрипта

— любое число вариантов для опции «тема письма»

— легко настраиваемые сообщения об ошибках без необходимости править PHP-код


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

Предлагаю и вам реализовать у себя на сайте такую интересную и красивую форму.

Для ознакомления с содержанием урока Вы можете просмотреть видео ниже. Скачать видеоурок в высоком качестве можно по ссылке выше.


P.S. Хотите всерьез заняться веб-разработкой? Присмотритесь к премиум-урокам по различным аспектам сайтостроения, а также к бесплатному курсу по созданию своей CMS-системы на PHP с нуля. Все это поможет вам быстрее и проще освоить JavaScript, jQuery, Ajax, PHP и другие языки и технологии:

Понравился материал и хотите отблагодарить?

Просто поделитесь с друзьями и коллегами!

Смотрите также:

Наверх

Как я делаю формы обратной связи. Часть 1. FormIt+Fancybox | Блог

Как я делаю формы обратной связи. Часть 1. FormIt+Fancybox | Блог | Создание и обслуживание сайтов на Modx

Уведомление об использовании cookie, IP-адреса и местоположения

Пример уведомление об использовании информации

Читать

Выводим вложенный MIGX в MIGX через Fenom

Инструкция как вывести поля MIGX во вложенной таблице MIGX через Fenom

Читать

Выгрузка для каталога Facebook

Подготавливаем файл со списком товаров для каталога Facebook

Читать

SEO требования к сайтам (первичное SEO)

Список правил по SEO (первичное SEO)

Читать

Автозакрытие fancybox через время

Улучшаем форму обратной связи

Читать

17 апреля 2016, 18:05


Средняя оценка:

Всего голосов: 5

На любом сайте обязательно должна быть форма обратной связи. В этой статье/инструкции я расскажу как делаю такие формы на сайтах клиентов, и как это сделано на моём сайте

Все формы можно разделить на две группы: обычные и всплывающие. В данном материале речь пойдёт о всплывающей форме обратной связи

И еще на мой вгляд идеальная форма обратной связи должна обладать следующим функционалом:

  • Маска ввода телефона и email
  • Защита от ботов(каптча)
  • Авто-ответ клиенту
  • Сохранение заявок в админке

1. Скачиваем и устанавливаем FormIt и Recaptchav2

Как скачивать и устанавливать дополнения описывать не буду — в интернете есть куча материалов на эту тему.

2.Скачиваем и подключаем maskedinput.js

Этот скрипт дает возможность задавать маску ввода телефона

3. Скачиваем с официального сайта Fancybox

Загружаем Fancybox на сайт и подключаем стили и скрипты:

4. Создаем отдельный шаблон для формы обратной связи

Делаем именно отдельный шаблон с минимальным наполнением для того чтобы в всплывающем окне ничего лишнего не было

5. Создаем два документа и задаем им шаблон созданный в предыдущем шаге

В одном размещаем вызов FormIt.

В другом документе помещаем текст об успешной отправке заявки.

6. Создаем необходимые чанки

6. В нужном месте вставляем вызов всплывающего окна

Готово! Данный код мною был установлен на многих сайтах и является 100% рабочим.

Если возник какой либо вопрос — пишите — помогу)

Название параметраОписание
Подключить системную библиотеку JQUERY (Если в шаблоне не подключена библиотека JQUERY) Для работы компонента необходима библиотека JQUERY. Если в шаблоне сайта не подключена библиотека JQUERY установите данный чекбокс.
Использовать CAPTCHA При включенном чекбоксе в форме будет отображаться CAPTCHA для защиты от автоматической рассылки сообщений
Сообщение об успешной отправке письма Задает текст сообщения отображаемого пользователю при успешной отправке формы
Сообщение о неудачной попытке отправки письма Задает текст сообщения отображаемого пользователю при ошибке отправки формы
Сообщение о незаполненных полях Задает текст сообщения отображаемого пользователю при не заполненных обязательных полях. К данному тексту добавляется список незаполненных полей
Заголовок всплывающего окна Задает текст заголовка формы находящийся в верхней части всплывающего окна формы
Текст триггера Текст располагающийся на кнопке открытия формы
Электронная почта получателя сообщения Адрес электронной почты на который будут поступать сообщения с заполненными формами

Название параметра Описание
Инфоблок для получения дополнительных адресов получателей сообщения В списке указывается инфоблок, элементы которого будут использоваться для построения выпадающего списка дополнительных получателей формы (если не задан, список дополнительных получателей отображаться не будет)
Свойство инфоблока содержащее адрес получателя В списке указывается свойство элемента инфоблока которое будет использовано как адрес электронной почты дополнительного получателя формы (если не задан, список дополнительных получателей отображаться не будет)
Свойство инфоблока для отображения В списке указывается свойство элемента инфоблока отображаемое вместо названия элемента инфоблока (если не задано, будет отображаться название элемента инфоблока)
Свойство инфоблока для отображения В списке указывается дополнительное свойство элемента инфоблока отображаемое совместно с указанным в предыдущем параметре (если не задано, будет отображаться либо название элемента инфоблока, либо значение заданное в предыдущем параметре)
Свойство инфоблока обязательно заполненное у элемента Позволяет задать свойство по которому будут отбираться элементы инфоблока для построения списка дополнительных получателей. В список дополнительных получателей будут попадать только элементы у которых данное свойство заполнено.
Время кэширования выборки из инфоблока Задает время на которое будут сохраняться результаты выборки из базы данных
Подпись к списку Подпись к списку дополнительных адресов получателей
Подпись к контактным данным Подпись к списку полей формы
Поля для заполнения Поля отображаемые в форме
Поля обязательные для заполнения Поля обязательные для заполнения, если какое-либо из полей указанных в данном списке не заполнено пользователем, будет отображаться ошибка отправки формы.
Тип почтового шаблона Тип почтового шаблона
Почтовый шаблон для отправки сообщения Почтовый шаблон на основании которого будет формироваться сообщение с данными формы
Максимальная длина данных Максимальная длина данных допустимая для ввода в поля формы.
ID формы Идентификатор формы, если на странице расположено несколько форм, необходимо установить различные идентификаторы для каждой из форм
Отображать правила отправки формы При отмеченном чекбоксе будет отображаться чекбокс с правилами заполнения формы (политикой конфиденциальности)
Адрес страницы с политикой обработки персональных данных Адрес ссылки на страницу содержащую правила заполения форм или политику конфиденциальности
Использовать иконку Выбор иконки для отображения на триггере формы