Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   отправка письма ajax (https://javascript.ru/forum/misc/38088-otpravka-pisma-ajax.html)

iskander83 18.05.2013 20:03

отправка письма ajax
 
Привет всем!
возникла такая проблемма... письмо приходит с полями undefined
вот сама форма

<form class="order-pufs popup-style" method="post">
      <div class="pufs-container">
        <img src="../img1.jpg" >
       </div>
      <div class="description-pufs">
        <h1 class="title">Кресло</h1>
<input type="text" name="name" placeholder="Введите имя: *" id="name">
       
          <input type="text" name="phone" placeholder="Введите телефон: *" id="phone">
       
.....................
     
    
        <button class="button-order-pufs">Заказать</button>

 
    </form>


Проблемма в том что в письме приходит:

Заказчик: undefined
Его номер телефона: undefined

То есть скрипт то срабатует (и все в нем тоже), а вот почему данные не отправляет нужные? не пойму...


Вот сам скрипт

$(".button-order-pufs").on("click",function(){
	  
    var Top_modal_window = ($(document).scrollTop() + 20);
    $(".ordering").css("top",Top_modal_window+"px","display","block");
	
	 var name,phone;

    name=$('#name').find('input[name="name"]').val();
    phone=$('#phone').find('input[name="phone"]').val();

    $.ajax({
      url: 'sendmessage.php'/*tpa=http://wonderpuff.ru/ordering-send.php*/,
      data: 'name='+name+'&phone='+phone,
      type: 'POST',
      success: function(data){

        $('.popup').children('form').hide();
        $('.popup .done').show();
        popupCenter($('.done').text(data));
        setTimeout(function(){
          $('.popup .done,.popup').hide(700);
        }, 3000)
      }
    });
    return false;	
  });


А вот файл sendmessage.php непосредственно:


<?php
$sendto   = "za-rabotoy@yandex.ru";
$userphone = $_POST['phone'];
$username = $_POST['name'];

// Формирование заголовка письма
$subject  = "Новое сообщение";
$headers  = "From: crossi.ru\r\n";

$headers .= "Content-Type: text/plain;charset=utf-8 \r\n";

// Формирование тела письма
$msg="Заказчик: $username \nЕго номер телефона: $userphone\n\n";

// отправка сообщения
if(@mail($sendto, $subject, $msg, $headers)) {
  echo "true";
} else {
  echo "false";
}

?>


Помогите друзья....

ruslan_mart 19.05.2013 07:57

Цитата:

name=$('#name').find('input[name="name"]').val();
Ну так Вы в input'е пытаетесь найти ещё один input.

И зачем вообще тэг form, если Вы отправляете ajax запрос?

<div id="form">
   <input type="text" placeholder="Введите имя: *" id="name" />
   <input type="text" placeholder="Введите телефон: *" id="phone" />
   <input type="button" value="Заказать" onclick="send()" />
</div>


function send()
{
   $.post('sendmessage.php', {name:$('#name).val(), phone:$('#phone').val()},
   function(data){
      setTimeout(function(){
          $('#form').hide(700);
      }, 3000)
   });
}

iskander83 19.05.2013 16:12

Спасибо за подсказку...
 
var name,phone;

 name=$('#name').val();
    phone=$('#phone').val();


и все заработало...
зачем я вообще какой то ....find('input.... лишний написал....

тег форм (мною описанный код это лишь часть конструкции) - там модальные окна... Может он и не нужен, но эму тоже там класс присвоен, что-бы не переделывать все оставил как есть...
СПАСИБО ПРОФЕССОР (Руслан) - всегда выручаешь...


Часовой пояс GMT +3, время: 12:34.