Не отправляется или не получает
Есть обработчик формы
JS: var submitRequestForm = function() { $('#bronModal').modal('hide'); $('#thxModal').modal('show'); var json = JSON.stringify({ name: $("#req_name").val(), drug: $("#req_drug").val(), phone: $("#req_phone").val(), comment: $("#req_comment").val(), site: 'Poisk apteki' }); var url = "http://search-apteki.ru/sendmail/index.php"; $.post(url, json, function(resp) { console.log(resp); } ); $.post("http://search-apteki.ru/sendmail/index.php", JSON.stringify({ name: $("#req_name").val(), phone: $("#req_phone").val(), comment: $("#req_drug").val() + ", " + $("#req_comment").val(), }), function(resp) { } ); } И есть обработчик отправленных данных PHP: <?php if(isset($_POST['name'])) { $name = $_POST['name']; $name = htmlspecialchars($name); $name = urldecode($name); $name = trim($name); $drug = $_POST['drug']; $drug = htmlspecialchars($drug); $drug = urldecode($drug); $drug = trim($drug); $phone = $_POST['phone']; $phone = htmlspecialchars($phone); $phone = urldecode($phone); $phone = trim($phone); $comment = $_POST['comment']; $comment = htmlspecialchars($comment); $comment = urldecode($comment); if (mail("123123123@ya.ru", "Заявка с сайта", "Имя:".$name." E-mail: ".$drug." Телефон:".$phone." Сообщение:".$comment."",$drug)) { echo "сообщение успешно отправлено"; //header('Refresh:3; URL=https://123123123/contacts.php'); } else { echo "при отправке сообщения возникли ошибки"; } } else header("Location: /");?> В итоге данная система в паре не работает, а обработчик на php пашет, в чём косяк? |
Цитата:
Проверь доходит ли дело до самой отправки... Получил ли чего сервер... Сам ему пошли все, что нужно - посмотри чего он там ответил... Отправитель и получатель в одном домене? |
В том-то и дело что всё работает, кроме одного, $.post не отправляет данные на файл обработчик, который работает
|
Цитата:
|
Ну так сказать функция mail выполняется, т.е. js запрашивает php проверку..
Но вот не задача, поля приходят пустыми.... Т.е. по сути он отправляет данные, но пустые |
Цитата:
Цитата:
|
На отправку даю форму
<form action="javascript: submitRequestForm();"> <div class="form-group"> <input class="form-control" required placeholder="Ваше имя" value="" id="req_name" type="text"> </div> <div class="form-group"> <input class="form-control" placeholder="Интересующий препарат" id="req_drug" value="" type="text"> </div> <div class="form-group"> <input class="form-control" required placeholder="Телефон" id="req_phone" value="" type="text"> </div> <div class="form-group"> <input class="form-control" placeholder="Комментарий" id="req_comment" value="" type="text"> </div> <div class="clearfix"></div> <button type="submit" class="btn btn-request btn-block">Отправить</button> </form> var submitRequestForm = function() { $('#bronModal').modal('hide'); $('#thxModal').modal('show'); var json = JSON.stringify({ name: $("#req_name").val(), drug: $("#req_drug").val(), phone: $("#req_phone").val(), comment: $("#req_comment").val() }); var url = "http://search-apteki.ru/sendmail/index.php"; $.post(url, json, function(resp) { console.log(resp); } ); } |
И если я отправлял отдельно текст name: "123"
Тоже приходит пустым |
gko11, а зачем JSON.stringify? Напрямую объект нужно вроде как.
|
Напрямую тоже пробовал, не выходит
|
gko11,
если клиент отправляет JSON, то на сервере не будет $_POST['name'] и прочего. $name = htmlspecialchars($name); $name = urldecode($name); и далее подобное, это никчемное и не нужное. |
if(isset($_POST['name']))
{ В начале обработчика стоит проверка, Тут косяк в js либо в форме |
var url = "http://search-apteki.ru/sendmail/index.php";
$.post(url, { name: $("#req_name").val(), drug: $("#req_drug").val(), phone: $("#req_phone").val(), comment: $("#req_comment").val() }, function(resp) { console.log(resp); } ); |
gko11, северу данные как JSON.stringify(object) переданы не будут, не отправит JQ такое. Можно так отправить 'key=' + JSON.stringify(object).
В этом случае на сервере будет получен массив под ключом key которого будет JSON, и нужно получить данные из него сначала - json_decode. Отправляйте просто объект как уже было сказано. А вот htmlspecialchars и urldecode выкинуть, это чушь. Первое не нужно потому, что отправление как текст, а второе потому, что urldecode будет выполнено уже. |
Если можно код представить, я js пока только изучаю)
|
var url = "http://search-apteki.ru/sendmail/index.php";
$.post(url, { name: "123123", drug: "123123", phone: "123123", comment: "123123" }, function(resp) { console.log(resp); } ); Пробовал делать так, но так же $_POST пустые |
Цитата:
$.ajax({ type: 'post', url: '/sendmail/index.php', //домен не обязателен, если только не запрос на другой data: { name: $("#req_name").val(), drug: $("#req_drug").val(), phone: $("#req_phone").val(), comment: $("#req_comment").val() }, success: function(d) { //Обработка ответа сервера, ответ хранится в d } }) |
Спасибо, но не работает, мне кажется косяк в самой форме, т.к. пытался на прямую с формы отправить на обработчик, а толку 0, так жы пустые значения
|
gko11,
Добавьте полям формы имена name, drug, phone, comment соответственно, запрос отправляйте по событию submit формы, тогда data: можно записать проще: data: $(this).serialize() |
Цитата:
<? if($_POST) { exit(print_r($_POST, 1)); //отправим клиенту что получили } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <style> </style> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <script> $(function() { $('#send').submit(function(e) { e.preventDefault(); $.ajax({ type: 'post', url: location, //заменить в реальном коде на действительный URL data: $(this).serialize(), success: function(d) { //Обработка ответа сервера, ответ хранится в d alert(d) } }) }); }); </script> </head> <body> <form id="send"> <div class="form-group"> <input class="form-control" required placeholder="Ваше имя" value="Пример" name="name" type="text"> </div> <div class="form-group"> <input class="form-control" placeholder="Интересующий препарат" name="drug" value="Пример" type="text"> </div> <div class="form-group"> <input class="form-control" required placeholder="Телефон" name="phone" value="Пример" type="text"> </div> <div class="form-group"> <textarea class="form-control" placeholder="Комментарий" name="comment">Пример</textarea> </div> <div class="clearfix"></div> <button type="submit" class="btn btn-request btn-block">Отправить</button> </form> </body> </html> Клиент в ответ получит массив, который он отправил серверу. Заменив в url текущий (location) на свой реальный, код будет отправлять и на реальный адрес. Поле INPUT для комментария неудобно. |
Увы, этот метот ещё раз попробовал, не работает
|
Цитата:
|
Если просто вставить скрипт, то он пашет исправно, если подключить мой обработчик никакой реакции
|
Цитата:
|
url: "/sendmail/index.php", - строковые выражения нужно заключать в кавычки.
И не цитируйте полностью то, что я пишу. |
Покопавшись в коде, понял что косяк где-то в главной странице, а где не пойму
<!DOCTYPE html><html lang="ru"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content="Единая справочная служба по всем аптекам Москвы, подробная информация о наличии лекарств, удобный поиск по районам и подбору низких цен. Подробная информация о времени работы и контактные телефоны аптек."> <meta name="keywords" content="аптеки Москвы, справочная аптек Москвы, поиск лекарств, наличие лекарств в аптеках Москвы"> <title>Справочная аптек — поиск лекарств в аптеках, наличие и цены</title> <link rel="shortcut icon" href="static/favicon.ico" type="image/x-icon"> </head> <body> <nav class="navbar navbar-default row"> <div class="col-xl-offset-3 col-xl-6 col-lg-offset-1 col-lg-10 col-md-offset-1 col-md-10 col-sm-offset-0 col-sm-12 nav-container"> <div style="width: 100%; white-space: nowrap;"> <a class="navbar-brand" href="index.html"> <img alt="поиск препаратов аптеки РФ" src="static/logo_drug.png"> <div class="navbar-brand__descriptions"> <span class="navbar-brand__desc1">ПОИСК-АПТЕКИ.RU<br></span> <span class="navbar-brand__desc2">Единый справочник препаратов России<br>по выгодным ценам</span> </div> </a> <div class="head-right"> <div class="head-description"> <a class="head-description__link" href="index.html#bronModal" onclick="$('#bronModal').modal('show')">Перезвоните мне</a> </div> </div> </div> </div> </nav> <div class="row"> <div class="col-xl-offset-3 col-xl-6 col-lg-offset-1 col-lg-10 col-md-offset-1 col-md-10 col-sm-offset-0 col-sm-12"> <!-- <h1>Поиск лекарств в аптеках</h1> --> </br></br><div id="search" class="two"> <div class="search"><form id="search_form" action="javascript: submitForm();"> <div class="input-group"> <input class="form-control" placeholder="Ведите название лекарства для того что бы начать поиск" id="search_form_input" value="" type="text" /> <span class="input-group-btn"><button class="fa fa-search" type="submit"><img src="static/img/search_small.png" alt="Поиск"></button></span> </div> </form> </div> </div> <div class="content one"> <!-- Search --> <div style="margin-top: 30px;margin-left:-40px;"> <blockquote>Для того, что бы найти необходимый Вам препарат введите его в строку поиска.</br>Например: Софосбувир, Доклотосфир, Ледипасфир</blockquote></div> </div> </div> </div> <div class="row" style="margin-top: 30px;"> <div class="col-xl-offset-3 col-xl-6 col-lg-offset-1 col-lg-10 col-md-offset-1 col-md-10 col-sm-offset-0 col-sm-12"> <div class="row" style="text-align: center;"> <div class="col-xs-12 col-sm-4"> <img src="static/img/step1.jpg" width="150px" style="max-width: 100%;"> <div style="font-size: 32px; color: #808080">ШАГ 1</div> <div style="font-size: 16px;">Воспользуйтесь поиском препаратов<br>вверху страницы</div> </div> <div class="col-xs-12 col-sm-4"><img src="static/img/step2.jpg" width="150px" style="max-width: 100%;"> <div style="font-size: 32px; color: #808080">ШАГ 2</div> <div style="font-size: 16px;">Ознакомьтесь со списком результатов.<br>Проверенных аптечных учреждений</div> </div> <div class="col-xs-12 col-sm-4"><img src="static/img/step3.jpg" width="150px" style="max-width: 100%;"> <div style="font-size: 32px; color: #808080">ШАГ 3</div> <div style="font-size: 16px;">Позвоните в выбранную аптеку или<br><a href="index.html#bronModal" onclick="$('#bronModal').modal('show')">закажите звонок нашего специалиста</a> </div> </div> </div> </div> </div> <div class=" row"> <div class="col-xl-offset-3 col-xl-6 col-lg-offset-1 col-lg-10 col-md-offset-1 col-md-10 col-sm-offset-0 col-sm-12 footer"> <a class="footer-brand" href="index.html"> <div class="navbar-brand__descriptions"> <span class="navbar-brand__desc1">ПОИСК-АПТЕКИ.RU<br></span> <span class="navbar-brand__desc2">Единый справочник препаратов<br>по выгодным ценам</span> </div> </a> <span class="footer__copyright">© 2015-2017 Все права защищены</br>Разработано студией <a href="http://s-white.ru">S-WHITE</a></span> </div> </div> <script defer src="static/js/jquery-3.1.1.min.js" type="text/javascript"></script> <script defer src="static/js/bootstrap.min.js" type="text/javascript"></script> <script defer src="static/js/jquery-ui.min.js"></script> <div id="licenseModal" class="modal fade"> <div class="modal-dialog"> <div class="modal-content"> <!-- Заголовок модального окна --> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <h4 class="modal-title">Лицензии</h4> </div> <!-- Основное содержимое модального окна --> <div class="modal-body request-modal"> <div class="row"><div class="col-xs-4"> <a href="static/licenz1.jpg"><img src="static/licenz1-small.jpg" style="width: 100%"></a> </div> <div class="col-xs-4"><a href="static/lic2.jpg"><img src="static/lic2-small.jpg" style="width: 100%"></a> </div> <div class="col-xs-4"><a href="static/inn.jpg"><img src="static/inn-small.jpg" style="width: 100%"></a> </div> </div> </div> <!-- Футер модального окна --> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">Закрыть</button> </div> </div> </div> </div> <div id="thxModal" class="modal fade"> <div class="modal-dialog"> <div class="modal-content"> <!-- Заголовок модального окна --> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <h4 class="modal-title">Спасибо за обращение.</h4> </div> <!-- Основное содержимое модального окна --> <div class="modal-body request-modal"> Наш оператор свяжется с вами в ближайшее время </div> <!-- Футер модального окна --> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">Закрыть</button> </div> </div> </div> </div> <div class="modal fade" id="bronModal" tabindex="-1" role="dialog" aria-labelledby="bronModalLabel" aria-hidden="true" style="width: 100%"> <div class="modal-dialog request-modal"> <div class="modal-content"> <div class="modal-body"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true" style="position: absolute; top: 10px; right: 20px;">×</button> <div class="row" style="height: 100%"> <div class="col-xs-12 col-sm-7 col-md-8"> <h2 style="color: #f16525; align: center; display: block" align="center">Заказать обратный звонок</h2> <form action="javascript: submitRequestForm();"> <div class="form-group"> <input class="form-control" required placeholder="Ваше имя" value="" name="req_name" id="req_name" type="text"> </div> <div class="form-group"> <input class="form-control" placeholder="Интересующий препарат" name="req_drug" id="req_drug" value="" type="text"> </div> <div class="form-group"> <input class="form-control" required placeholder="Телефон" name="req_phone" id="req_phone" value="" type="text"> </div> <div class="form-group"> <input class="form-control" placeholder="Комментарий" name="req_comment" id="req_comment" value="" type="text"> </div> <div class="clearfix"></div> <button type="submit" class="btn btn-request btn-block">Отправить</button> </form> </div> <div class="consult col-xs-12 col-sm-5 col-md-4" style="text-align: center;"> <p style="font-size: 16px;"> или позвоните на бесплатный номер </p> <h1>+7(495) 211-07-12</h1> <p style="font-size: 12px;"> звонок по РФ бесплатный <br>24 часа в сутки </p> </div> </div> </div> <div class="modal-footer" style="text-align: center"> <span style="text-size: 12px; color: grey;">Мы гарантируем полную конфиденциальность ваших данных</span> </div> </div><!-- /.modal-content --> </div><!-- /.modal-dialog --> </div> <script defer type="text/javascript" src="static/js/app.js"></script> <link rel="stylesheet" property="stylesheet" type="text/css" href="static/css/bootstrap.min.css"> <link rel="stylesheet" property="stylesheet" type="text/css" href="static/css/bootstrap-yii.css"> <link rel="stylesheet" property="stylesheet" type="text/css" href="static/css/jquery-ui-bootstrap.css"> <link rel="stylesheet" property="stylesheet" type="text/css" href="static/css/template.css"> <link rel="stylesheet" property="stylesheet" type="text/css" href="static/css/responsive.css"> <link rel="stylesheet" property="stylesheet" type="text/css" href="static/css/font-awesome.min.css"> <!-- RedConnect --> <script id="rhlpscrtg" type="text/javascript" charset="utf-8" async="async" src="https://web.redhelper.ru/service/main.js?c=klimatorru"></script> <!--/RedConnect --> </body> </html> |
Пишет что сообщение отправленно, только скрипт php всё равно не получил данные, проверял этот скрипт на голой html форме, всё работает
|
<input class="form-control" placeholder="Комментарий" name="req_comment" id="req_comment" value="" type="text"> - считаете, что в такое поле удобно писать комментарий? Наверное же TEXAREA нужна?
Вот эту хрень id="req_comment" и подобное в других полях выкинуть к чертовой матери. Смотрите код формы в примере, у них имена, и этого достаточно, и как отправляются поля формы примере тоже показано. action="javascript: submitRequestForm();" - в помойку. Смотрите пример. |
id="req_comment" было изначально, name сказали добавить выше...
action="javascript: submitRequestForm();" action="http://search-apteki.ru/sendmail/index.php" method="POST" Ни 1 из вариантов не работает, по поводу коментария, это уже не важно, главное чтоб работал |
Цитата:
|
Да дело то не в почте или скрипте, дело где-то на html странице, т.к. я вместо этой формы ставил рабочую и о чудо она тоже не работала...
Но как проблема может быть в html? Ставил без скриптов и css эту страницу и рабочую форму, не отправляло! |
Цитата:
До отправки почты лень написать if($_POST) exit(print_r($_POST, 1)); чтобы удостоверится что север получает данные? Хотите получить помощь, значит проверять а не гадать. |
Дак всмысле гадать? Если html форма, в которой указан метод пост и ссылка на обработчик, аналогично не работает, тут стоит грешить тогда на обработчик, я его проверил на голой форме и он работает, тогда в чём косяк? В форме? Я вставил голую форму за место той и она тоже не работала, отключив js и стили она аналогично не работала, остаётся 2 проблемы это хостинг(Но работает он исправно) и html.
Я не гадаю на кофейной гуще, я перепробовал все варианты, и они не работают |
Вот это другое дело, работает ваш код по http://search-apteki.ru/1.php. То есть все Ок. Остается посмотреть внимательно на код формы моего примера и на свой. В моем у полей есть имена, ID не нужны. Поля сериализует метод jQ, а если у поля формы нет имени, то на сервер оно отправляться не будет. Приведите в порядок код своей формы, выкинув из нее то, о чем говорилось и все будет работать.
|
На реальной странице, два раза подключается jQuery - исправить. Либо со своего сайта, либо с Гугла.
|
Да, и оператор ваш по указанному мной номеру телефона "а" связаться вряд ли сможет.
|
<form method="POST" action="http://search-apteki.ru/sendmail/index.php"> <div class="form-group"> <input class="form-control" required placeholder="Ваше имя" value="" name="req_name" type="text"> </div> <div class="form-group"> <input class="form-control" placeholder="Интересующий препарат" name="req_drug" value="" type="text"> </div> <div class="form-group"> <input class="form-control" required placeholder="Телефон" name="req_phone" value="" type="text"> </div> <div class="form-group"> <input class="form-control" placeholder="Комментарий" name="req_comment" value="" type="text"> </div> <div class="clearfix"></div> <button type="submit" class="btn btn-request btn-block">Отправить</button> </form> На файл перенаправляет, выводит что сообщение отправлено, но оно не отправляется.... Хотя ещё пол часа назад отправлялось |
Ещё один пример, попробуй отправит данные, увидишь что получил php скрипт http://search-apteki.ru/1.php
|
Мне что еще раз код написать или достаточно для понимания?
Я разве это придумал в вашем коде на сервере? $name = $_POST['name']; $drug = $_POST['drug']; $phone = $_POST['phone']; ...... Нет. Это я согласно этого в своем коде формы именовал так поля ее: name, drug, .... А у вас что за хрень такая name="req_name" и т.д.? Как может север получить в массиве полученном по ключу name, если в нем такого нет? Естественно $name = $_POST['name'] будети равно NULL. Вы же на сервере ничего не проверяете (и на клиенте тоже), не важно что там пришло, пустое ли поле или нет, сразу воткнули в почтовое сообщение и отправили. |
Сделал форму как сказанно выше, вернул отправку на js, выходит опять так, форма отправляет, js перехватывает и уходит на php, он отправляет всё на почту, но переменные пустые, вывод, косяк в js
var submitRequestForm = function() { $('#bronModal').modal('hide'); $('#thxModal').modal('show'); var json = JSON.stringify({ name: $("#req_name").val(), drug: $("#req_drug").val(), phone: $("#req_phone").val(), comment: $("#req_comment").val() }); $.ajax({ type: 'post', url: 'http://search-apteki.ru/sendmail/index.php', //домен не обязателен, если только не запрос на другой data: $(this).serialize(), success: function(d) { //Обработка ответа сервера, ответ хранится в d } }) } |
Часовой пояс GMT +3, время: 02:26. |