Как сделать модальную форму обратной связи. Моя версия. На фронтэнде используем Bootstrap 3 + jQuery. Похожим образом реализовал в одном проекте. Для бэкэнда напишем скрипт на Google Apps Script. Возрастная группа потребителей следующего далее материала - 7+, в смысле изложено более чем доступно. Попытайтесь повторить это дома.
Начнем с бэкэнда. Идем по адресу https://script.google.com/, создаем пустой проект:
Пишем код скрипта:
Сохраняем, назовем как-нибудь скрипт:
Выполняем:
Авторизуем скрипт:
Проверяем почту:
Все ОК. Сохраняем версию проекта:
Разворачиваем веб-приложение:
Выбираем уровень доступа - "Все, включая анонимных пользователей":
Копируем URL веб-приложения - пригодится:
Переходим к фронтэнду. Качаем Bootstrap 3 и jQuery. Пишем HTML-код нашей формы:
Сохраняем HTML-файл.
Не забываем положить рядом с сохраненным HTML-файлом скачанные ранее библиотеки: bootstrap.min.css, bootstrap.min.js и jquery-1.10.2.min.js.
Открываем HTML-файл в браузере, нажимаем большую синюю кнопку:
Продолжаем разговор. Добавляем в самый конец тэга <body> HTML-файла код скрипта:
Примечание: к сожалению Google Apps Script не дружит с XMLHttpRequest, поэтому для работы с данными используем JSONP.
Возвращаемся к бэкэнду - нашему скрипту Google Apps Script, редактируем код:
Сохраняем новую версию проекта:
Разворачиваем новую версию веб-приложения:
Открываем новую версию HTML-файла в браузере, нажимаем большую синюю кнопку, заполняем поля данными:
Оправляем данные формы:
Примечание: если вы тестируете код на моей версии HTML-файла, то получите сообщение об ошибке. Мне не хотелось бы получать письмо каждый раз, когда очередной читатель будет отправлять данные в адрес моего скрипта на Google Apps Script, поэтому я изменил его код таким образом, чтобы он в любом случае возвращал "Error" - все по чесноку :) - для того, чтобы убедиться, откройте консоль браузера.
Открываем консоль браузера (Ctrl+Shift+J):
Похоже все ОК. Проверяем почту:
Как и обещал - все доступно, повторяемо и легкоусвояемо :).
Начнем с бэкэнда. Идем по адресу https://script.google.com/, создаем пустой проект:
Пишем код скрипта:
function doPost(e) { MailApp.sendEmail('Ваш_Email@gmail.com', 'Feed from mysite.ru', 'My super message',{ htmlBody: '<p>from: ' + 'me' + '</p>' + '<p>email: ' + 'my@gmail.com' + '</p>' + '<p>message: ' + 'Hello, world!' + '</p>' }); }
Сохраняем, назовем как-нибудь скрипт:
Выполняем:
Авторизуем скрипт:
Проверяем почту:
Все ОК. Сохраняем версию проекта:
Разворачиваем веб-приложение:
Выбираем уровень доступа - "Все, включая анонимных пользователей":
Копируем URL веб-приложения - пригодится:
Переходим к фронтэнду. Качаем Bootstrap 3 и jQuery. Пишем HTML-код нашей формы:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Contact Form</title> <link href="bootstrap.min.css" rel="stylesheet"> </head> <body> <div class="container" style="text-align: center; margin-top: 10px;"> <a href="#contact" data-toggle="modal" class="btn btn-primary btn-lg">Большая синяя кнопка</a> </div> <div id="contact" class="modal fade" tabindex="-1", role="dialog", aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button class="close" data-dismiss="modal", aria-hidden="true">×</button> <h3 class="modal-title">Контакты:</h3> </div> <form id="contact-form" class="modal-body" role="form"> <div class="form-group"> <input class="form-control input-lg" type="text", placeholder="Ваше имя", required, name="name"> </div> <div class="form-group"> <input class="form-control input-lg" type="email", placeholder="Ваш email", required, name="mail"> </div> <div class="form-group"> <textarea class="form-control input-lg" rows="5", placeholder="Ваше сообщение", required, name="message"></textarea> </div> </form> <div class="modal-footer"> <button class="btn btn-default btn-lg" type="submit", title="Отправить Email", form="contact-form">Отправить</button> </div> </div> </div> </div> <script src="./jquery-1.10.2.min.js"></script> <script src="./bootstrap.min.js"></script> </body> </html>
Сохраняем HTML-файл.
Не забываем положить рядом с сохраненным HTML-файлом скачанные ранее библиотеки: bootstrap.min.css, bootstrap.min.js и jquery-1.10.2.min.js.
Открываем HTML-файл в браузере, нажимаем большую синюю кнопку:
Продолжаем разговор. Добавляем в самый конец тэга <body> HTML-файла код скрипта:
<script> $('#contact-form').on('submit', function(e) { e.preventDefault(); // предотвратим отправку формы - действие по умолчанию var that = $(e.target); // получаем ссылку на источник события - форму #contact-form $.ajax({ // отправляем данные // URL развернутого скрипта Google Apps Script url: 'https://script.google.com/macros/s/AKfycby2HeahiWEdoKK0ZwXAPk5xjivrg-Yrs3qZu8hwxx5lSOhCaXU/exec', data: $(this).serialize(), // собираем запрос jsonp: 'cb', // имя параметра запроса jsonpCallback: 'bingo', // имя функции dataType:'jsonp', // тип данных success: function bingo(data){ console.log(data); // проверим данные, полученные с бэкэнда if (data == 'Error') { alertForm({form: that, type: 'alert-danger', msg: 'Не удалось отправить сообщение.'}); return; } alertForm({form: that, type: 'alert-success', msg: 'Ваше сообщение отправлено.'}); that.find('textarea').val(''); }, error: function(){ alertForm({form: that, type: 'alert-danger', msg: 'Не удалось отправить сообщение.'}); } }); }); // функция вывода сообщений в модальную форму function alertForm(alert) { var div = $('<div class="alert ' + alert.type + '" style="display: none;">' + alert.msg + '</div>'); alert.form.prepend(div); div.slideDown(400).delay(3000).slideUp(400, function() { alert.form.closest('.modal').modal('hide'); div.remove(); }); } </script>
Примечание: к сожалению Google Apps Script не дружит с XMLHttpRequest, поэтому для работы с данными используем JSONP.
Возвращаемся к бэкэнду - нашему скрипту Google Apps Script, редактируем код:
function doGet(e) { try { MailApp.sendEmail('Ваш_Email@gmail.com', 'Feed from mysite.ru', e.parameters.message, { htmlBody: '<p>from: ' + e.parameters.name + '</p>' + '<p>email: ' + e.parameters.mail + '</p>' + '<p>message: ' + e.parameters.message + '</p>' }); return ContentService.createTextOutput(e.parameters.cb + '("OK")').setMimeType(ContentService.MimeType.JAVASCRIPT); } catch(e) { return ContentService.createTextOutput(e.parameters.cb + '("Error")').setMimeType(ContentService.MimeType.JAVASCRIPT); } }
Сохраняем новую версию проекта:
Разворачиваем новую версию веб-приложения:
Открываем новую версию HTML-файла в браузере, нажимаем большую синюю кнопку, заполняем поля данными:
Оправляем данные формы:
Примечание: если вы тестируете код на моей версии HTML-файла, то получите сообщение об ошибке. Мне не хотелось бы получать письмо каждый раз, когда очередной читатель будет отправлять данные в адрес моего скрипта на Google Apps Script, поэтому я изменил его код таким образом, чтобы он в любом случае возвращал "Error" - все по чесноку :) - для того, чтобы убедиться, откройте консоль браузера.
Открываем консоль браузера (Ctrl+Shift+J):
Похоже все ОК. Проверяем почту:
Как и обещал - все доступно, повторяемо и легкоусвояемо :).
Комментариев нет:
Отправить комментарий
Комментарий будет опубликован после модерации