Задать вопрос
volkovecgenei
@volkovecgenei
...

Почему неправильно работает форма обратной связи?

Есть формы обратной связи на сайте, если обрабатывать на прямую (Прописать метод пост и обработчик mail.php прямо в форме), то работает.
В Js я не силен, но решил использовать Ajax
$('form').submit(function () {
        // Получение ID формы
        var formID = $(this).attr('id');
        // Добавление решётки к имени ID
        var formNm = $('#' + formID);
        $.ajax({
            type: "POST",
            url: 'mail.php',
            data: formNm.serialize(),
            success: function (data) {
                // Вывод текста результата отправки
                $(formNm).html(data); 
            },
            error: function (jqXHR, text, error) {
                // Вывод текста ошибки отправки
                $(formNm).html(error);         
            }
        });
        return false;
    });


Mail.php

<?php
		require 'phpmailer/PHPMailerAutoload.php';
		$mail = new PHPMailer;
		$name = $_POST['user_name'];
		$phone = $_POST['user_phone'];

		$mail->isSMTP();

		$mail->Host = 'smtp.yandex.ru';
		$mail->SMTPAuth = true;
		$mail->Username = '123'; // логин от вашей почты
		$mail->Password = '######'; // пароль от почтового ящика
		$mail->SMTPSecure = 'ssl';
		$mail->Port = '465';

		$mail->CharSet = 'UTF-8';
		$mail->From = '123'; // адрес почты, с которой идет отправка
		$mail->FromName = 'Заявка с сайта - портфолио'; // имя отправителя
		$mail->addAddress('vamper.2012@gmail.com', 'Имя');
		//$mail->addAddress('vamper.2012@gmail.com', 'Имя 2');
		$mail->addCC('vamper.2012@gmail.com');

		$mail->isHTML(true);

		$mail->Subject = 'Ваш сайт';
		$mail->Body    = '' .$name . ' оставил заявку <br>Телефон этого пользователя: ' .$phone;
		$mail->AltBody = 'Привет, мир! Это альтернативное письмо';
		//$mail->addAttachment('img/Lighthouse.jpg', 'Картинка Маяк.jpg');
		// $mail->SMTPDebug = 1;

		if( $mail->send() ){
			echo 'Спасибо за отправку сообщения';
		}else{
			echo 'Письмо не может быть отправлено. ';
			echo 'Ошибка: ' . $mail->ErrorInfo;
		}
	?>


В чем причина, поля приходят пустые, если работаю через ajax?
  • Вопрос задан
  • 124 просмотра
Подписаться 1 Простой 4 комментария
Пригласить эксперта
Ответы на вопрос 1
OKyJIucT
@OKyJIucT
Sunshine reggae
У вас
<form id="form-popup"
и
<div id="form-popup"
- по всей видимости, скрипт при отправке формы не находит полей, поскольку вы ищете форму по id и отправляет пустые значения.

Дайте каждой форме уникальный id (чтобы в коде страницы встречался только один раз - у формы), и должно заработать
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы