jQuery对象通过ajax发送邮件到PHP()

时间:2016-07-27 09:45:04

标签: javascript php jquery ajax email

所以我试图将一个jQuery函数的对象发送到PHP脚本,通过mail()发送它们,但是我的电子邮件总是空的,所以我想我可能真的不明白我应该怎么做让它正常工作

这是jQuery函数

            function sendForm() {

            $surname = $('#surname').val();
            $name = $('#name').val();
            $email = $('#email').val();
            $comment = $('#q4').val();

            $to = 'asd@efg.de'
            $subject = 'Contact Form'

            $datastring = {$surname,$name,$email,$comment,$to,$subject}

            $.ajax({
                url: 'send.php',
                type: 'post', 
                data: $datastring,
                success: function() { 
                    alert('email sent!');
                }
            });
            return false;
        }

这里是send.php

<?php
$to      = $_POST[$to];
$subject = $_POST[$subject];
$message = $_POST[$comment];
$headers = 'From: webmaster@example.com' . "\r\n" .
    'Reply-To: webmaster@example.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);
?> 

我缺少什么?谢谢你的帮助!

编辑:我检查了$ datastring,它拥有我想要的表单的所有值。保存为对象

3 个答案:

答案 0 :(得分:2)

您必须提供数据对象名称的属性,否则您将收到错误:

$datastring = {
    surname : $surname,
    name    : $name,
    email   : $email,
    comment : $comment,
    to      : 'asd@efg.de',
    subject : 'Contact Form'
};

在PHP方面,您可以再次使用此名称获取值:

$surname = $_POST["surname"];
$name    = $_POST["name"];
$email   = $_POST["email"];
$comment = $_POST["comment"];
$to      = $_POST["to"];
$subject = $_POST["subject"];

答案 1 :(得分:1)

创建对象的方式使每个值undefined,因为你没有真正的键和值,你需要这样做而不是

function sendForm() {
    $datastring = {
        'surname' : $('#surname').val(),
        'name'    : $('#name').val(),
        'email'   : $('#email').val(),
        'comment' : $('#q4').val(),
        'to'      : 'asd@efg.de',
        'subject' : 'Contact Form'
    }

    $.ajax({
        url     : 'send.php',
        type    : 'post',
        data    : $datastring,
        success : function() {
            alert('email sent!');
        }
    });
    return false;
}

要在PHP中获取值,您需要使用字符串作为键

$_POST["subject"];

答案 2 :(得分:1)

尝试更改

$datastring = {$surname,$name,$email,$comment,$to,$subject}

$datastring = {'username':$surname,'name':$name,'email':$email,'contact':$comment,'to':$to,'subject':$subject}

然后改变

$to      = $_POST[$to];

$to      = $_POST['to'];

与其他PHP代码类似。