не отправляются переменные формы

238
01 мая 2017, 02:21
            <form id="request">
                <div class="one_third_100"><input type="text" id="name_req" placeholder="Ваше имя"/></div>
                <div class="one_third_100"><input type="text" id="phone_req" placeholder="Введите номер телефона"/></div>
                <div class="one_third_100"><div class="but_r"><input type="submit" value="Перезвонить мне"/></div></div>
            </form>

$('form#request').submit(function () {
    var name=$('input#name_req').val();
    var phone=$('input#phone_req').val();
    var error=0;
    if (name==''){
        $('input#name_req').css('border-color','red');
        error=1;
    }
    if (phone==''){
        $('input#phone_req').css('border-color','red');
        error=1;
    }
    if (error==0){
        $.post( "../mail/send.php",{ name: name, phone: phone }, function( data ) {
            $('div.but_r').html('<div class="good">Сообщение успешно отправлено!</div>');
        });
    }
    return false;
});

<?php
  /* получатели */
  $to= "mr.dvorezky@yandex.ru";
  $name=htmlspecialchars($_POST['name']);
  $phone=htmlspecialchars($_POST['phone']);
  $subject = "Запрос консультации";
 /* сообщение */
 $message = '
 <html>
 <body>
 <p><strong>Запрос с сайта:</strong></p>
 <strong>Имя:</strong>&nbsp;'.$name.'<br/>
 <strong>Телефон:</strong>&nbsp;'.$phone.'<br/>
 </body>
 </html>
 ';
 $headers= "MIME-Version: 1.0\r\n";
 $headers .= "Content-type: text/html; charset=UTF-8\r\n";
 $headers .= "From: Luxstahl.com <info@luxstahl.com>\r\n";
 mail($to, $subject, $message, $headers);
 ?>
Answer 1

Прошу прощения, господа, что отвлек. Решение своего вопроса нашел сам после долгих исканий. Весь код написанный мной и поправленный вами работает: и мой, и ваши предложения. Я просто переходил с http на https и ссылки на jquery-библиотеку остались в http. После изменения на https протокол все работает. Спасибо!

Answer 2

у формы по умолчанию метод отправки "get", сделайте

<form id="request" method="post">

либо на серверной стороне читайте переменные не из $_POST, а из $_GET.

Answer 3

Если отправляете данные в JSON, то он должен быть валидным, вашем случае:

   $.post( "../mail/send.php",{ "name": name, "phone": phone }, function( data ) {
        $('div.but_r').html('<div class="good">Сообщение успешно отправлено!</div>');
    }, "json");

Ещё, советую писать функцию отправки данных в таком виде:

$.ajax({
  type: "POST",
  url: "../mail/send.php",
  data: {"name": name, "phone": phone},
  success: function(resp){...},
});

Так конфигурация отправки сама представлена в виде объекта, удобно читать. В форме обязательно уберите действие по умолчанию:

<form action="javascript:void(null);" ...
READ ALSO
Как вставить в HTML блок стиль полученный из JS?

Как вставить в HTML блок стиль полученный из JS?

В блок с классомheader вставляется текст с размером текущей высоты браузера, а мне надо, что бы эти цифры в стили шли:

332
Хешировать в SHA512 без гемороя в jQuery

Хешировать в SHA512 без гемороя в jQuery

Можно ли получить SHA512 хеш строки в jQuery без огромных функции, циклов и прочегоНапример мне надо хешировать строку:

262
Ошибка в скрипте при переходе на якоря в HTML документе

Ошибка в скрипте при переходе на якоря в HTML документе

Вот есть рабочий скрипт для якорей на странице:

257
вопрос про CSS в многостраничном сайте

вопрос про CSS в многостраничном сайте

Я делаю сайт с несколькими страницами (контакты, галерея, и тп) И поскольку это мой первый сайт, у меня вопрос, как стоит поступать, привязывать...

257