Не так давно я публиковал материал на тему отправки писем при помощи PHP-функции mail. Теперь мы возьмем тот же скрипт, слегка его изменим, вынесем в отдельный файл под названием mail.php и добавим немного магии, будем отправлять данные без перезагрузки страницы. Помогут нам в этом библиотека jQuery и технология Ajax. Все тот же POST запрос мы будем обрабатывать в фоновом режиме, но для того, чтобы было понятно, что на странице что-то происходит, отобразим процесс отправки данных в виде небольшой анимации, а по окончании выведем сообщение об успешной отправке или об ошибке.
Письмо будет приходить на почту в том же виде, что и в предыдущем посте, я лишь убрал вывод сообщений. Форма тоже идентична. Теперь, нужно подключить jQuery. Я использую Bootstrap, чтобы не писать свой велосипед, вы можете сделать так же. И теперь, чтобы отправка происходила без перезагрузки станицы, мы пропишем вполне стандартный Ajax запрос и немного его кастомизируем под свои нужды.
Прогоняем данные через функцию serialize() (преобразование данных в строку)
Запуск функции перед отправкой данных
Делаем текст на кнопке прозрачным
Добавляем кнопке бутстраповские стили от анимированного прогресс-бара
Запуск функции при ошибке отправки данных
Вывод сообщения об ошибке на экран
Запуск функции после успешной отправки
Возвращаем тексту кнопки начальный цвет
Удаляем анимацию
Выводим сообщение об успешной отправке
Запускаем функцию очистки полей формы с интервалом в 2 секунды
Отправка данных без перезагрузки страницы — это наиболее простое, что можно сделать на Ajax. Есть и более сложные вещи, например получение данных. Но об этом мы поговорим в другой раз. Если что-то непонятно, пишите в комментариях вопросы. И напоследок предлагаю скачать готовый скрипт отправки формы без перезагрузки страницы.
Скажите пожалуйста, как обрабатывать чекбоксы с радио-кнопками??
Есть в этой статье и в видео.
Здравствуйте. Эта форма с защитой от спама?
Без защиты. Защита есть здесь.
Почему не выполняется php-script, вместо него php интерпретируется как текст…
Какое расширение имеет файл, в котором пишете код?