Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/125: Рейтинг темы: голосов - 125, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 22.12.2014
Сообщений: 23

Отправка формы на почту с JavaScript и AJAX

09.08.2016, 17:57. Показов 24990. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые форумчане, подскажите, как отправить данные формы на почту с использованием только НАТИВНОГО JS и AJAX?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.08.2016, 17:57
Ответы с готовыми решениями:

Ajax отправка письма на почту, ошибка в файле mail.php
Разработал форму для отправки писем на почту посредством ajax и все бы ничего, но на почту приходит пустое письмо. Скрипт отправки js...

Ajax и php. Отправка на почту не только текстовых inoput но и файлов
Всем доброго времени суток. Знаю что на данную тему много ответов, но исследовав около 6 решений так и не понял как реализовать в моих...

Отправка формы на почту
Здравствуйте, создал форму отправки данных, написал код на PHP, но все равно не отправляет данные. Он выдает и сообщение об успешной...

19
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
09.08.2016, 18:17
dz1rt91, ищите сервисы, которые так делают. AJAX не является SMTP, так что невозможно. Только прослойки или API какой-нибудь, который будет отправлять его за вас.
0
0 / 0 / 0
Регистрация: 22.12.2014
Сообщений: 23
09.08.2016, 18:25  [ТС]
BANO, Мне дали тестовое задание в котором написано следующее:
"предполагается, что форма поздравления будет отравлять данные полей на сервер по AJAX при помощи GET запроса" как это реализовать?
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
09.08.2016, 18:30
dz1rt91, как всегда. Это просто отправка формы, никакая это не отправка почты. Сервер будет отправлять почту, как я и говорил.
Вам нужно просто пройтись по форме, и сформировать get строку. Она выглядит примерно так: ?name=var&name1=var1
Вообще это делается совсем нетрудно. Я недавно вот так делал, но там с использованием jquery.
Но генерация строки без неё.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
var searchObj = { // получение данных.
    region: +$("#region-filter").val(),
    page: +$("#view .pagination a.active").html(),
    category: +$("#categoryItems").find(".active").attr("data-category")
};
var search = "get&" + Object.keys(searchObj)
    .filter(function (name) {
        return searchObj[name]
    }).map(function (name) {
        return name + "=" + encodeURI(searchObj[name])
    }).join("&");
0
0 / 0 / 0
Регистрация: 22.12.2014
Сообщений: 23
09.08.2016, 18:35  [ТС]
BANO, первую переменную я понял, мы создаем объект который хранит все данные из формы, так?
а второй объект?

""get&" + " это строка которая будет складывать строку грубо говоря? типа на выходе будет строка такого типа get&var1get&var2 ?
а что за функция фльтр? ты можешь, пожалуйста, разобрать что написано с 6 по 11 строку? очень прошу
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
09.08.2016, 18:41
dz1rt91,
JavaScript
1
2
3
4
5
6
7
var search = "get&" + // начальная строка, мне нужно было, если значений нету совсем, тебе скорее всего не понадобится, так что можешь убрать
 Object.keys(searchObj) // получаем "имена" полей
    .filter(function (name) { // фильтруем имена
        return searchObj[name] // если значение: пуста строка, 0, undefined, то это поле выкидывается из строки
    }).map(function (name) { // создаём пары
        return name + "=" + encodeURI(searchObj[name]) // формат пары: "<name>=<value>"
    }).join("&"); // соединаяем пары знаком & (nam=val&name=value)
И так, в конце концов получали строку "get&region=1&category=1&page=3". если убрать "get&" +, то строка будет вот такая "region=1&category=1&page=3"
0
0 / 0 / 0
Регистрация: 22.12.2014
Сообщений: 23
09.08.2016, 18:45  [ТС]
BANO, спасибо! давно занимаешься js?

Добавлено через 2 минуты
BANO, книга Ильи Кантора подходит для изучения js?
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
09.08.2016, 18:47
dz1rt91, про Илью я слышал. Не знаю как у него с книгами, но сайт он отличный запилил.
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
09.08.2016, 19:36
Цитата Сообщение от dz1rt91 Посмотреть сообщение
подскажите, как отправить данные формы на почту ?
никак.
с использованием только НАТИВНОГО JS и AJAX можно лишь отправить данные формы файлу на сервер
а этот серверный файл из полученных данных может сформировать исходящее почтовое сообщение (если он для этого предназначен и это делать умеет)
0
0 / 0 / 0
Регистрация: 22.12.2014
Сообщений: 23
10.08.2016, 11:21  [ТС]
kalabuni, как это сделать?
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
10.08.2016, 16:01
Цитата Сообщение от dz1rt91 Посмотреть сообщение
как это сделать?
обратитесь на форум PHP и попросите там написать вам полностью код PHP-файла, который будет получать три пары GET-данных (емейл-адрес="значение", тема письма="значение", текст письма ="значение") и отправку всего этого на указанный емейл-адрес
а потом приходите сюда снова и мы расскажем вам, как с помощью НАТИВНОГО JS и AJAX со страницы отправить этому PHP-файлу три перечисленных выше пары "имя=значение"
0
0 / 0 / 0
Регистрация: 22.12.2014
Сообщений: 23
10.08.2016, 16:32  [ТС]
kalabuni, допустим у меня есть этот php файл и называется он sendForm.php, что делать дальше?
как обратиться к этому файлу, меня вот это интересует, как js файлом отправить данные которые нужно выслать на email php файлу?
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
10.08.2016, 17:06
предположим, что ваш файл sendForm.php лежит на сервере в той же папке, что и файл отправки, код которого я сейчас здесь выкладываю
и, предположим, что ваш файл sendForm.php, получив данные, просто отправляет письмо, а на страницу отправки вообще ничего не возвращает, никаких сообщений типа "письмо успешно отправлено" или "произошла ошибка отправки письма, попробуйте отправить позже ещё раз"

тогда код файла отправки может быть таким:
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<script>
    var XHR = new XMLHTTPRequest ()
function sendMail (f)
    {
var str = [] 
    for (var el = f.elements, j = 0; j < el.length - 1; j++)
        {
        str [j] = el[j]. name + '=' + encodeURIComponent (el[j].value);
        }
    XHR.open ('get', 'sendForm.php?' + str.join ('&'), true);
    XHR.send (null);
    }
</script>
<p><b>Кому</b><input name="address">
 
<hr><b>Тема</b><input name="subject">
<hr><textarea name="body" cols="80" rows="40"></textarea>
<p><input type="button" value="Отправить" onclick="sendMail (this.form)">
</form>
0
0 / 0 / 0
Регистрация: 22.12.2014
Сообщений: 23
10.08.2016, 17:25  [ТС]
Цитата Сообщение от kalabuni Посмотреть сообщение
<script>
* * var XHR = new XMLHTTPRequest () // создаем реквест
function sendMail (f) // создаем функцию отправки
* * {
var str = [] // массив в который будут пушится данные
* * for (var el = f.elements, j = 0; j < el.length - 1; j++) // проходимся по всем элементам
* * * * {
* * * * str [j] = el[j]. name + '=' + encodeURIComponent (el[j].value); // собираем строку
* * * * }
* * XHR.open ('get', 'sendForm.php?' + str.join ('&'), true); // говорим кому и что посылать да?
* * XHR.send (null);
* * }
</script>
<p><b>Кому</b><input name="address">
<hr><b>Тема</b><input name="subject">
<hr><textarea name="body" cols="80" rows="40"></textarea>
<p><input type="button" value="Отправить" onclick="sendMail (this.form)">
</form>
верно ли я понял код?
P.S а как сделать что бы мне без перезагрузки пришло уведомление о том что форма успешно отправлена?
0
11.08.2016, 00:23

Не по теме:

Цитата Сообщение от dz1rt91 Посмотреть сообщение
верно ли я понял код?
Откуда нам известно?

0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
11.08.2016, 08:53
Цитата Сообщение от dz1rt91 Посмотреть сообщение
верно ли я понял код?
почти... только можно добавить в строке for (var el = f.elements, j = 0; j < el.length - 1; j++) // проходимся по всем элементам формы, кроме последней кнопки "Отправить"

Цитата Сообщение от dz1rt91 Посмотреть сообщение
как сделать что бы мне без перезагрузки пришло уведомление о том что форма успешно отправлена?
во-первых, эта функциональность должна быть в вашем файле sendForm.php, т.е. в нём должны быть строки типа следующих:

PHP
1
2
3
4
 if ($send) {$msg = 'письмо успешно отправлено';}
else {$msg = 'произошла ошибка отправки письма, попробуйте отправить его чуть позже ещё раз';}
header ("Content-type: text/plain; charset=utf-8");
print $msg;
во-вторых, в HTML-коде файла отправки где-то после закрывающего тега </form> желательно предусмотреть контейнер для вывода сообщения, например, такой
HTML5
1
<div id="mess" style="position: absolute; z-index: 5; left: 234px; top = 123px; width: 198px; text-align: center; border: 1px solid red; display: none"></div>
и, в-третьих, в коде скрипта внутри функции sendMail () перед строкой XHR.send (null); надо добавить следующие восемь строчек
JavaScript
1
2
3
4
5
6
7
8
XHR.onreadystatechange = function ()
    {
    if (XHR.readyState == 4)
        {
        document.getElementById ('mess').innerHTML = XHR.responseText;
        document.getElementById ('mess').style.display = 'block';
        }
    }
0
0 / 0 / 0
Регистрация: 22.12.2014
Сообщений: 23
11.08.2016, 11:52  [ТС]
kalabuni, спасибо, а можешь последний кусок кода прокомментить?
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
11.08.2016, 12:52
Цитата Сообщение от dz1rt91 Посмотреть сообщение
а можешь последний кусок кода прокомментить?

Не по теме:

я к обращаюсь к вам "на вы", а в ответ вы мне "тычете" -- вы плохо воспитаны?
или мы как-то с вами пили на брудершафт, но я просто про это подзабыл?


XHR -- это объект, который и осуществляет асинхронную связь между страницей и серверным файлом
перед тем как отправить запрос серверному файлу методом send () объект "готовится" получить ответ на свой запрос
у этого ответа на запрос есть так называемый статус готовности readyState -- изначально он равен 0 ( т.е. UNINITIALIZED -- неинициализирован)
затем он меняется на 1 (т.е. LOADING -- грузится)
потом становится равным 2 (LOADED -- загружен)
позже становится равным 3 (INTERACTIVE -- почти готов к использованию страницей)
и, наконец равняется 4 (COMPLETE -- полностью готов)
так вот, событие onreadystatechange объекта XHR отслеживает любые изменения статуса готовности ответа
в строке #1 моего javascript-кода на это событие назначается безымянная функция, которая в реальности запускается четыре раза, но только в последний раз, когда статус ответа станет равен 4 (когда ответ станет "полностью готов"), эта функция внутри контейнера c id ="mess" строкой #5 прописывает текст, полученный от серверного файла, и строкой #6 делает этот контейнер видимым (он же изначально был невидим -- style="display: none" -- см. мой HTML-код в сообщении выше)
первые три раза (когда статус ответа меняется на 1, на 2 и на 3) эта функция запускается, но ничего не делает
0
0 / 0 / 0
Регистрация: 22.12.2014
Сообщений: 23
11.08.2016, 22:11  [ТС]
Извините что "тыкал", спасибо Вам огромное! Счастья, здоровья, всех благ!
0
12.08.2016, 23:24

Не по теме:

Цитата Сообщение от dz1rt91 Посмотреть сообщение
Счастья, здоровья, всех благ!
Прям Медведев...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.08.2016, 23:24
Помогаю со студенческими работами здесь

Отправка формы на почту
Доброго времени суток. Подскажите кто, где можно взять пример формы (т.е. php,js,html). Чтобы форма отправляла данные и файл на почту.

Отправка формы на почту
Всем привет. Есть скрипт отправки формы на почту. Три поля и фото.Но работает как то не так. Например на яндекс приходит нормально, но...

Отправка формы на почту
Здравствуйте, необходимо отправить форму на почту, написал HTML и PHP код, при отправке вылезает ошибка mail(): Multiple or malformed...

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

Отправка формы на почту
Итак, сразу говорю: я в Java ни в зуб ногой. Но неожиданно по работе возникла проблема - необходимо создать примитивную форму заказа. Дабы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru