Обратная форма связи без перезагрузки страницы
На странице выводится две формы обратной связи. Первая работает корректно, вторая не работает. В чем может быть ошибка? И еще один момент: при нажатии на кнопку "отправить" скрипт уведомляет, что письмо отправлено. Но письмо на почту не поступает. Где-то есть ошибка? Подскажите, пожалуйста. Благодарю!
$(document).ready(function() { $("#feedback_submit").click(function(){ $.ajax({ type: "POST", url:"sendmail.php", data:$("#callbacks").serialize(), error:function(){$("#erconts").html("Произошла ошибка!");}, beforeSend: function() { $("#erconts").html("Отправляем данные..."); }, success: function(result){ $("#erconts").html(result); checkThis(); } }); return false; }); }); <form name="MyForm" action="" id="callbacks" class="feedback_form" method="post"> <input type="text" name="name" data-placeholder="true" placeholder="Как к вам обращаться?" required> <input type="text" name="email" data-placeholder="true" placeholder="Ваш E-mail" required> <input type="submit" value="Отправить" id="feedback_submit"> </form> <div id="erconts"></div> <form name="MyForm" action="" id="callbacks" class="feedback_form" method="post"> <input type="text" name="name" data-placeholder="true" placeholder="Как к вам обращаться?" required> <input type="text" name="email" data-placeholder="true" placeholder="Ваш E-mail" required> <input type="submit" value="Отправить" id="feedback_submit"> </form> <div id="erconts"></div> <?php if (isset($_POST["email"])){ if (isset($_POST["name"])) {$name = $_POST["name"];} if (isset($_POST["email"])) {$email = $_POST["email"];} if($name=="" or $email==""){ echo "Заполните, пожалуйста, все поля!"; }else{ $ip=$_SERVER["REMOTE_ADDR"]; $to = "pochta@mail.ru"; $subject = "Заявка!"; $headers .= "Content-Type: text/html; charset=UTF-8 "; $headers .= "From: Заявка с сайта"; $message = " Имя: $name<br> E-mail: $email<br><br> --------------------------------------------------------<br> ---------------IP отправителя: $ip<br> "; $send = mail($to, $subject, $message, $headers); if ($send == "true") { echo "Поздравляем! Ваша заявка принята!"; } else { echo "Не удалось отправить, попробуйте снова!"; } } } ?> |
Отредактировал вопрос
|
Цитата:
Цитата:
Цитата:
меняйте на классы или используйте селектор по атрибуту. |
Цитата:
|
Подскажите, пожалуйста, меняю
$("#feedback_submit").click(function(){ на $("input[rel='feedback_submit']").click(function(){ а также добавляю rel='feedback_submit' в <input type="submit" value="Проконсультируйте меня" id="feedback_submit" rel='feedback_submit'> и тогда ни одна форма не работает. Что я делаю не так? |
LADYX,
$(function() { $('[name="MyForm"]').submit(function(event) { event.preventDefault(); var form = this; var title = $(form).next(); $.ajax({ type: "POST", url:"sendmail.php", data:$(form).serialize(), error:function(){title.html("Произошла ошибка!");}, beforeSend: function() { title.html("Отправляем данные..."); }, success: function(result){ title.html(result); checkThis(); } }); }) }); |
рони,
да, спасибо. И второй момент. Я тут немного подредактировал код, теперь письма отправляются и поступают по почту, всё замечательно работает. Одно только не могу понять, как сделать, чтобы в поле "от кого" была не мой адрес почты, а адрес почты отправителя. И с Reply-To пытался, но не в какую. Подскажите, пожалуйста <?php if (isset($_POST["email"])){ if (isset($_POST["name"])) {$name = $_POST["name"];} if (isset($_POST["email"])) {$email = $_POST["email"];} if($name=="" or $email==""){ echo "Заполните, пожалуйста, все поля!"; }else{ $ip=$_SERVER["REMOTE_ADDR"]; $to = "mail@mail.ru"; $subject = "Заявка!"; $headers = "Content-type:text/plain; charset=utf-8;"; $headers = "From: <mail@mail.ru>"; $message = "Имя: $name\nE-mail: $email\nIP отправителя: $ip"; $send = mail($to, $subject, $message, $headers); if ($send == "true") { echo "Поздравляем! Ваша заявка принята!"; } else { echo "Не удалось отправить, попробуйте снова!"; } } } ini_set('short_open_tag', 'On'); ?> рони, кстати, обе формы теперь работают, только почему-то при нажатии на субмит, если поля не заполнены, то предупреждение "Заполните, пожалуйста, все поля!" не появляется, а только срабатывает required. Это не настолько конечно важно, но просто не могу понять причины |
Цитата:
|
рони,
я понял, спасибо вам! |
Цитата:
Заголовки сообщения формируются неверно. Тема письма не кодируется. Функция mail не отправляет почту, она отдает ее на отправление и возвращает булево значение true/false, а не строки "true". http://php.net/manual/ru/function.mail.php |
Часовой пояс GMT +3, время: 14:55. |