05.05.2018, 22:10
|
|
Профессор
|
|
Регистрация: 19.02.2015
Сообщений: 219
|
|
Обратная форма связи без перезагрузки страницы
На странице выводится две формы обратной связи. Первая работает корректно, вторая не работает. В чем может быть ошибка? И еще один момент: при нажатии на кнопку "отправить" скрипт уведомляет, что письмо отправлено. Но письмо на почту не поступает. Где-то есть ошибка? Подскажите, пожалуйста. Благодарю!
$(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 "Не удалось отправить, попробуйте снова!";
}
}
}
?>
Последний раз редактировалось LADYX, 06.05.2018 в 18:32.
|
|
06.05.2018, 18:33
|
|
Профессор
|
|
Регистрация: 19.02.2015
Сообщений: 219
|
|
Отредактировал вопрос
|
|
06.05.2018, 18:40
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
Сообщение от LADYX
|
вторая не работает.
|
Сообщение от LADYX
|
id="feedback_submit"
|
Сообщение от LADYX
|
$("#feedback_submit").click
|
id уникальный идентификатор, и jquery тогоже мнения, находится только первый, других в нормальном случае быть не может
меняйте на классы или используйте селектор по атрибуту.
|
|
06.05.2018, 18:47
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от LADYX
|
if($name=="" or $email=="")
|
Один пробел и будет Ок хотя это далеко не так.
|
|
06.05.2018, 19:52
|
|
Профессор
|
|
Регистрация: 19.02.2015
Сообщений: 219
|
|
Подскажите, пожалуйста, меняю
$("#feedback_submit").click(function(){
на
$("input[rel='feedback_submit']").click(function(){
а также добавляю rel='feedback_submit' в
<input type="submit" value="Проконсультируйте меня" id="feedback_submit" rel='feedback_submit'>
и тогда ни одна форма не работает. Что я делаю не так?
|
|
06.05.2018, 20:27
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
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();
}
});
})
});
|
|
06.05.2018, 21:13
|
|
Профессор
|
|
Регистрация: 19.02.2015
Сообщений: 219
|
|
рони,
да, спасибо.
И второй момент. Я тут немного подредактировал код, теперь письма отправляются и поступают по почту, всё замечательно работает. Одно только не могу понять, как сделать, чтобы в поле "от кого" была не мой адрес почты, а адрес почты отправителя. И с 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. Это не настолько конечно важно, но просто не могу понять причины
|
|
06.05.2018, 21:31
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
Сообщение от LADYX
|
то предупреждение "Заполните, пожалуйста, все поля!" не появляется,
|
возможно checkThis нет или эта функция вне видимости, с остальным ждите специалистов по php.
|
|
06.05.2018, 21:34
|
|
Профессор
|
|
Регистрация: 19.02.2015
Сообщений: 219
|
|
рони,
я понял, спасибо вам!
|
|
07.05.2018, 04:11
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от LADYX
|
как сделать, чтобы в поле "от кого" была не мой адрес почты, а адрес почты отправителя.
|
При такой проверке if($name=="" or $email=="")?
Заголовки сообщения формируются неверно. Тема письма не кодируется. Функция mail не отправляет почту, она отдает ее на отправление и возвращает булево значение true/false, а не строки "true".
http://php.net/manual/ru/function.mail.php
|
|
|
|