如何使用php从$ .ajax获取值

时间:2010-11-30 10:17:46

标签: php jquery ajax

我正在尝试使用$ .ajax将一些值发送到php页面然后发送电子邮件, 我无法弄清楚如何从我的php文件中获取$ .ajax的值,

任何帮助将不胜感激,

$(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 个答案:

答案 0 :(得分:2)

您正在检查您未提交的变量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 :(得分:1)

尝试将'submit_x'发送到php:)

答案 2 :(得分:0)

您可以使用数据映射来定义数据:

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); }
  });