Как получить значения из $ .ajax с помощью php - PullRequest
0 голосов
/ 30 ноября 2010

Я пытаюсь использовать $ .ajax для отправки некоторых значений на страницу php, которая затем отправляет электронное письмо, Я не могу понять, как получить значения из $ .ajax в моем php-файле,

любая помощь будет оценена,

$(function() {

$('form#email input[type=image]').click(function() {

    var name = $('form#email #name').val();
    var enq = $('form#email #enq').val();
    var dataString = 'name=' + name + '&enq=' + enq;

    $.ajax({
        type:'POST',
        url:'email.php',
        data:dataString,
        success:function() {
            $('form#email').fadeOut();
        }

    });
    $('form#email')[0].reset();
    return false;                              
 });
});

php файл

if (isset($_POST['submit_x'])) {

$name = $_POST['name'];
$enq = $_POST['enq'];
$name = htmlentities($name);
$enq = htmlentities($enq);

//echo $name,$enq;

$to = 'amirkarimian@hotmail.co.uk';
//$to = 'tutor@inspiretuition.co.uk'
$subject = 'Enquiry';
$message = $enq;

mail($to,$subject,$message);

if(!mail) {
    echo 'failed to send mail';
}
}

письмо не отправлено. если я не использую $ .ajax и отправляю форму, как правило, письмо отправляется.

спасибо

Ответы [ 3 ]

2 голосов
/ 30 ноября 2010

Вы проверяете переменную, которую не отправляете, submit_x, вам нужно удалить эту внешнюю if проверку.Кроме того, лучше позволить jQuery правильно сериализовать ваши строки (что, если там есть &?), Например:

$(function() {
  $('#email input[type=image]').click(function() {
    $.ajax({
        type:'POST',
        url:'email.php',
        data: { name: $('#name').val(), enq: $('#enq').val() }
        success:function() {
            $('form#email').fadeOut();
        }
    });
    $('#email')[0].reset();
    return false;                              
  });
});

Или, если элементы <form> имеют надлежащие атрибуты имени (они должны,для постепенного ухудшения) вы можете заменить data: { name: $('#name').val(), enq: $('#enq').val() }
на data: $('#email').serialize().

1 голос
/ 30 ноября 2010

попробуйте отправить 'submit_x' на php:)

0 голосов
/ 30 ноября 2010

Вы можете использовать карту данных для определения ваших данных:

var name = $('form#email #name').val();
   var enq = $('form#email #enq').val();

   $.ajax({
    type: 'POST',
    url: 'email.php',
    dataType: 'html',
    data: {
     submit_x   : 1,
     name     : name,
     enq     : enq
   },
   success: function(html){
    $('form#email').fadeOut();
   },
   error:  function(e, xhr)  { alert('__a Error: e: ' + e + ', xhr:' + xhr); }
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...