Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.05.2018, 22:10
Аватар для LADYX
Профессор
Отправить личное сообщение для LADYX Посмотреть профиль Найти все сообщения от LADYX
 
Регистрация: 19.02.2015
Сообщений: 217

Обратная форма связи без перезагрузки страницы
На странице выводится две формы обратной связи. Первая работает корректно, вторая не работает. В чем может быть ошибка? И еще один момент: при нажатии на кнопку "отправить" скрипт уведомляет, что письмо отправлено. Но письмо на почту не поступает. Где-то есть ошибка? Подскажите, пожалуйста. Благодарю!
$(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.
Ответить с цитированием
  #2 (permalink)  
Старый 06.05.2018, 18:33
Аватар для LADYX
Профессор
Отправить личное сообщение для LADYX Посмотреть профиль Найти все сообщения от LADYX
 
Регистрация: 19.02.2015
Сообщений: 217

Отредактировал вопрос
Ответить с цитированием
  #3 (permalink)  
Старый 06.05.2018, 18:40
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от LADYX
вторая не работает.
Сообщение от LADYX
id="feedback_submit"
Сообщение от LADYX
$("#feedback_submit").click
id уникальный идентификатор, и jquery тогоже мнения, находится только первый, других в нормальном случае быть не может
меняйте на классы или используйте селектор по атрибуту.
Ответить с цитированием
  #4 (permalink)  
Старый 06.05.2018, 18:45
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

А хостинг вам позволяет отправлять? Надо проверить для начала mail('test@test.test', 'test', 'test');
Ответить с цитированием
  #5 (permalink)  
Старый 06.05.2018, 18:47
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от LADYX
if($name=="" or $email=="")
Один пробел и будет Ок хотя это далеко не так.
Ответить с цитированием
  #6 (permalink)  
Старый 06.05.2018, 19:52
Аватар для LADYX
Профессор
Отправить личное сообщение для LADYX Посмотреть профиль Найти все сообщения от LADYX
 
Регистрация: 19.02.2015
Сообщений: 217

Подскажите, пожалуйста, меняю
$("#feedback_submit").click(function(){

на
$("input[rel='feedback_submit']").click(function(){

а также добавляю rel='feedback_submit' в
<input type="submit" value="Проконсультируйте меня" id="feedback_submit" rel='feedback_submit'>

и тогда ни одна форма не работает. Что я делаю не так?
Ответить с цитированием
  #7 (permalink)  
Старый 06.05.2018, 20:27
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

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();
		}
    });
})
});
Ответить с цитированием
  #8 (permalink)  
Старый 06.05.2018, 21:13
Аватар для LADYX
Профессор
Отправить личное сообщение для LADYX Посмотреть профиль Найти все сообщения от LADYX
 
Регистрация: 19.02.2015
Сообщений: 217

рони,
да, спасибо.
И второй момент. Я тут немного подредактировал код, теперь письма отправляются и поступают по почту, всё замечательно работает. Одно только не могу понять, как сделать, чтобы в поле "от кого" была не мой адрес почты, а адрес почты отправителя. И с 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. Это не настолько конечно важно, но просто не могу понять причины
Ответить с цитированием
  #9 (permalink)  
Старый 06.05.2018, 21:31
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от LADYX
то предупреждение "Заполните, пожалуйста, все поля!" не появляется,
возможно checkThis нет или эта функция вне видимости, с остальным ждите специалистов по php.
Ответить с цитированием
  #10 (permalink)  
Старый 06.05.2018, 21:34
Аватар для LADYX
Профессор
Отправить личное сообщение для LADYX Посмотреть профиль Найти все сообщения от LADYX
 
Регистрация: 19.02.2015
Сообщений: 217

рони,
я понял, спасибо вам!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Форма без перезагрузки страницы mirstiker Работа 11 21.07.2016 01:47
location.search иXMLHttpRequest без перезагрузки страницы (AJAX) Ruskat AJAX и COMET 2 14.06.2016 22:35
AJAX отправка формы без перезагрузки страницы Igorsrt AJAX и COMET 3 30.05.2016 10:54
Подгрузка информера без перезагрузки страницы splean Общие вопросы Javascript 6 13.03.2009 15:31
Автообновление <div> без перезагрузки страницы Antihrist AJAX и COMET 14 28.07.2008 06:06