| 
	| 
	
	| 
		
	| 
			
			 
			
				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,150
					 
		
 |  |  
	| 
	
 
	| Сообщение от LADYX |  
	| вторая не работает. |  
	
 
	
 
	| Сообщение от LADYX |  
	| id="feedback_submit" |  
	
 
	
 
	| Сообщение от LADYX |  
	| $("#feedback_submit").click |  
	
 id уникальный идентификатор, и jquery тогоже мнения, находится только первый, других в нормальном случае быть не может 
меняйте на классы или используйте селектор по атрибуту. |  |  
	| 
		
	| 
			
			 
			
				06.05.2018, 18:47
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| 
	
 
	| Сообщение от 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,150
					 
		
 |  |  
	| 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,150
					 
		
 |  |  
	| 
	
 
	| Сообщение от LADYX |  
	| то предупреждение "Заполните, пожалуйста, все поля!" не появляется, |  
	
 возможно checkThis нет  или эта функция вне видимости, с остальным ждите специалистов по php. |  |  
	| 
		
	| 
			
			 
			
				06.05.2018, 21:34
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 19.02.2015 
						Сообщений: 219
					 
		
 |  |  
	| рони,я понял, спасибо вам!
 |  |  
	| 
		
	| 
			
			 
			
				07.05.2018, 04:11
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| 
	
 
	| Сообщение от LADYX |  
	| как сделать, чтобы в поле "от кого" была не мой адрес почты, а адрес почты отправителя. |  
	
 При такой проверке if($name=="" or $email=="") ?
 
Заголовки сообщения формируются неверно. Тема письма не кодируется. Функция mail не отправляет почту, она отдает ее на отправление и возвращает булево значение true/false, а не строки "true".
http://php.net/manual/ru/function.mail.php |  |  |  |