Форма обратной связи

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

Из этой статьи вы узнаете, как создается форма обратной связи, использующая AJAX. Мы будем использовать jQuery и простой почтовый PHP-скрипт для отправки данных формы на email.

Создание HTML-формы

Наша первая задача — настроить HTML-форму. Задайте для элемента идентификатор ajax-contact , для атрибута method установите значение post , а для атрибута action — значение mailer.php .

Мы создали форму с полями для ввода имени пользователя, адреса электронной почты и сообщения. Обратите внимание, что каждое поле формы содержит атрибут required . В браузерах, поддерживающих валидацию форм HTML5, его использование не разрешает отправку данных, если поля не заполнены.
Затем нужно создать , который будет использоваться для отображения сообщений об ошибках или об успешной отправке данных.Разместите этот элемент выше тега и присвойте идентификатор form-messages .

Теперь нужно загрузить примеры кода и скопировать файл style.css в каталог проекта. Также необходимо добавить элемент , который указывает браузеру загрузить файл CSS.

Нужно создать два элемента , которые ссылаются на библиотеку jQuery и файл app.js. Добавьте их перед закрывающим тегом .

Важно сначала загрузить файл jquery-2.1.0.min.js , так как для скрипта app.js требуется jQuery.
Это весь HTML-код, который понадобится. Теперь рассмотрим JavaScript.

Передача данных формы с помощью AJAX

Создайте в каталоге проекта новый файл с именем app.js . Он будет включать в себя код, необходимый для отправки данных формы с помощью AJAX.
Скопируйте следующий код в файл app.js .

Мы создали две переменные form и formMessages , которые ссылаются на соответствующие элементы HTML.
Затем нужно создать прослушиватель, который перехватывает событие submit в форме.Это можно сделать, используя метод jQuery submit .

// Устанавливаем прослушиватель для контактной формы. $(form).submit(function(event) < // Блокируем отправку данных формы в браузере. event.preventDefault(); // TODO >);

Передаем методу submit функцию, которая будет выполнена, когда пользователь отправит данные формы. Мы также указали браузеру не отправлять форму, как обычно, вызвав для события метод preventDefault.
Теперь нужно сериализовать данные формы. Они будут преобразованы в строку ключ / значение для отправки ​​с помощью AJAX- запроса. Используйте jQuery- метод serialize для сериализации данных формы, а затем сохраните результат в переменной formData .

// Сериализуем данные формы. var formData = $(form).serialize();

Теперь напишем код, который отвечает за отправку данных формы на сервер и обработку ответа. Скопируйте следующий код в файл app.js .

// Отправка данных формы с помощью AJAX. $.ajax(< type: 'POST', url: $(form).attr('action'), data: formData >)

Для создания нового AJAX-запроса используется jQuery-метод ajax . Мы передали объект методу ajax , который включает в себя ряд свойств, используемых для настройки запроса. Свойство type указывает метод HTTP, который будет использоваться для отправки запроса. В нашем случае – это метод POST .
Свойство url — это местоположение скрипта, который будет обрабатывать данные формы. Мы задаем значение для этого свойства, извлекая атрибут action из формы. Значение свойства data задается с помощью переменной formData , которую мы создали ранее.
Затем нужно обработать успешный ответ, полученный с сервера. Скопируйте следующий код непосредственно после закрывающей скобки вызова ajax . Обратите внимание, что я умышленно оставил точки с запятой.

Читайте также:  Число пи html код

Метод done будет вызываться, если запрос завершится успешно. Сначала проверяем, что элемент formMessage s содержит класс success . Затем устанавливаем текстовое содержимое элемента, используя данные, возвращаемые почтовым скриптом. После чего очищаем значения каждого поля формы.
В последнем фрагменте JavaScript- кода нам нужно написать, что должно произойти, если произошла ошибка. Скопируйте следующий код в файл app.js .

Метод fail вызывается, если почтовый скрипт возвращает ошибку. Сначала проверим, что элемент formMessages содержит класс error . Затем проверяем, возвращает ли AJAX- запрос responseText . Если это так, используем текст для установки содержимого элемента formMessages. В противном случае используется стандартное сообщение об ошибке.
Это весь код HTML и JavaScript, необходимый для создания контактной формы на AJAX. В следующем разделе мы создадим скрипт, который отвечает за обработку данных формы и отправку электронной почты.

Создание почтового PHP-скрипта

Этот простой скрипт отвечает за проверку правильности данных формы и отправку электронной почты. Если возникнет ошибка, почтовый скрипт ответит соответствующим кодом состояния, чтобы выполнить JavaScript.
Создайте новый файл с именем mailer.php и скопируйте в него следующий код.

 // Устанавливаем email адрес получателя. // FIXME: Изменяем егона нужный email-адрес. $recipient = "hello@example.com"; // Задаем тему письма. $subject = "New contactfrom $name"; // Создаем содержимое письма. $email_content = "Name: $namen"; $email_content .= "Email: $emailnn"; $email_content .= "Message:n$messagen"; // Создаем заголовок письма. $email_headers = "From: $name "; // Отправляем письмо. if (mail($recipient, $subject, $email_content, $email_headers)) < // Устанавливаем код ответа 200 (okay). http_response_code(200); echo "Thank You! Your message hasbeensent."; >else < // Устанавливаем код ответа 500 (internal server error). http_response_code(500); echo "Oops! Somethingwentwrong and wecouldn'tsend your message."; >> else < // Не POST запрос, устанавливаемкод ответа 403 (forbidden). http_response_code(403); echo "Therewas a problem with your submission, pleasetryagain."; >?>

Этот скрипт начинается с проверки того, что запрос был отправлен с использованием метода POST . Если это не так, скрипт вернет код состояния HTTP 403 (forbidden) и сообщение об ошибке.
После того, как мы убедились, что был использован правильный HTTP-метод, извлекаемданные формы в переменные $name , $email и $message . А также используем метод PHP trim , чтобы вырезать пробелы.
Затем проверяем, чтобы ни одна из этих переменных не былапустой. Если одна или несколько переменных являются пустыми, устанавливаем код ответа 400 (bad request) и возвращаем в браузер сообщение об ошибке.

Готовим письмо к отправке. Сначала создаем переменную с именем получателя email . Затем создаем переменные для темы, содержимого и заголовка электронного письма.
Примечание . Настройка заголовка электронного письма является необязательной. Но благодаря ей письмо будет выглядеть так, будто его отправил человек, заполнивший форму.
Пытаемся отправить письмо с помощью PHP-функции. Если все прошло успешно, возвращаем сообщение об успешном завершении. Если это не так, задаем код ответа 500 (internal server error) и возвращаем сообщение об ошибке.
Примечание . Стандартная функция mail подходит для этих целей, но есть более надежные способы отправки электронной почты с помощью PHP.
Вот и все! Мы закончили.
Откройте созданный HTML-файл в браузере и протестируйте форму. Чтобы все работало корректно, нужно использовать веб-сервер с поддержкой PHP и функции mail.

Читайте также:  Range len data python

Заключение

Из этой статьи вы узнали, как создать контактную форму, в которой для связи с почтовым скриптом на сервере используется AJAX. Мы использовали jQuery, чтобы упростить код JavaScript.

Вадим Дворников автор-переводчик статьи « How to Create an AJAX Contact Form »

Пожалуйста, оставляйте ваши комментарии по текущей теме материала. Мы очень благодарим вас за ваши комментарии, лайки, отклики, подписки, дизлайки!

Источник

# Creating a contact form

We have our Contact Service email service and Contact Form email template from the previous steps. Let’s create a simple HTML form and send its content by email.

DOCTYPE html> html> head> title>Contact Formtitle> script type="text/javascript" src="https://cdn.jsdelivr.net/npm/@emailjs/browser@3/dist/email.min.js"> script> script type="text/javascript"> (function()  // https://dashboard.emailjs.com/admin/account emailjs.init('YOUR_PUBLIC_KEY'); >)(); script> script type="text/javascript"> window.onload = function()  document.getElementById('contact-form').addEventListener('submit', function(event)  event.preventDefault(); // generate a five digit number for the contact_number variable this.contact_number.value = Math.random() * 100000 | 0; // these IDs from the previous steps emailjs.sendForm('contact_service', 'contact_form', this) .then(function()  console.log('SUCCESS!'); >, function(error)  console.log('FAILED. ', error); >); >); > script> head> body> form id="contact-form"> input type="hidden" name="contact_number"> label>Namelabel> input type="text" name="user_name"> label>Emaillabel> input type="email" name="user_email"> label>Messagelabel> textarea name="message">textarea> input type="submit" value="Send"> form> body> html> 

You can obtain your public key from the Account

(opens new window) page in the EmailJS dashboard. After filling the fields and sending the request we should find the new email in our personal inbox. If you can’t find it take a look at the spam folder.

# So what did we do?

First, we load our EmailJS SDK

script type="text/javascript" src="https://cdn.jsdelivr.net/npm/@emailjs/browser@3/dist/email.min.js"> script> 

Second, we initialize the SDK with our public key

emailjs.init('YOUR_PUBLIC_KEY'); 

Third, we submit our contact form and send it through EmailJS, using our Contact Service and Contact Form:

emailjs.sendForm('contact_service', 'contact_form', this) 

# That’s it!

You now have a contact form that sends all submissions to your inbox via your own Gmail account.

Источник

Форма обратной связи через Node.js

Всем привет, хочу поделиться рабочей формой обратной связи на node.js.

Для начала, создадим саму форму (Проект обязательно должен называться index.html):

         

Форма связи

Имя:

Почта:

Сообщение:

@import url(https://fonts.googleapis.com/css?family=Montserrat:100,200,300,regular,500,600,700,800,900,100italic,200italic,300italic,italic,500italic,600italic,700italic,800italic,900italic); * < margin:0; padding:0; >html < font-family: "Montserrat"; font-weight: 400; >.footer < margin-top: 100px; >.inp < width: 250px; font-family:inherit; padding: 5px 15px; height: 30px; font-weight: inherit; letter-spacing: 1.3px; border-radius: 0; outline: none; border: 0; background-color: rgb(247, 247, 247); >.message < resize: none; padding: 12px 15px; width: 250px; letter-spacing: 1.3px; font-weight: inherit; font-family:inherit; height: 120px; border-radius: 0; outline: none; border: 0; background-color: rgb(247, 247, 247); >.pos-btn < width: 100%; top: 50px; position: relative; display: flex; justify-content: center; >.pos-btn button < background-color: black; text-transform: uppercase; color: white; min-width: 280px; border: 0; margin: 0px 15px; cursor: pointer; padding: 23px 0px; font-family: inherit; >.hint < margin: 20px; >.hint p < padding: 2px; letter-spacing: 2px; font-size: 14px; >.form < background-color: white; display: flex; flex-direction: column; width: 600px; margin: 80px 0px 0px 0px; >@media (max-width:600px) < .form< width:100%; align-items: center; >> @media (max-width:325px) < >.page

Дальше ловим данные с форм через node.js и записываем их в текстовой файл(Проект обязательно должен называться index.js):

import < fileURLToPath >from 'url' import path from 'path' import fs from 'fs' import http, < request >from "http" const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); let server = http.createServer(function(request, response) < let indexPage = fs.readFileSync(path.join(__dirname, "index.html")) if (request.url == "/") < response.writeHead(200, < "Content-Type": "text/html" >) response.end(indexPage) > else if (request.url == "/message" && request.method == "POST") < let data = "" request.on("data", function(chunk) < data += chunk; >) request.on("end", function() < let search = new URLSearchParams(data) let name = search.get("firstName") let email = search.get("gmail") let message = search.get("message") fs.appendFileSync(path.join(__dirname, "admin.txt"), `\nПолучено новое сообщение!(\n Имя: $,\n Почта: $,\n Сообщение: $;\n )\n`) >) response.writeHead(302, < "Location": "/" >) response.end("Sent successfully!") > else< response.writeHead(200, < "Content-Type": "text/html" >) response.end(`

404




Page not found

`) > >) server.listen(3000)

Написав код, создайте admin.txt, туда будут записываться данные с форм. После всех манипуляций осталось только паблишнуть проект, для этого я использую бесплатный сервис https://replit.com/. Первый шаг — регистрация. Тут все как всегда, юзернейм, почта, пароль.

После регистрации кликаем на My Repls:

Дальше находим Node.js и называем наш проект как хотим, к примеру MySite.:

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

После создания «Репла» перетаскиваем наши файлы с папки, а именно admin.txt, index.html и index.js:

После чего в package.json, который создается автоматически обязательно прописываем «type»:»module»,:

Дальше жмем Run и ждем, пока проект загрузиться:

Дальше копируем у себя свою ссылку, которую я обвел и вставляем в браузер:

После отправки данные с форм приходят к нам в файлик на хостинге:

Также, обратите внимание, что проект по ссылке будет открываться не сразу. К примеру, у меня он открылся через 5 минут после нажатия Run.

Спасибо за внимание! Хорошего дня 🙂

Источник

Оцените статью