JQuery对象通过ajax向PHP发送邮件()

JQuery object to PHP via ajax to send a mail()

本文关键字:PHP 对象 ajax JQuery      更新时间:2023-09-26

所以我试图将一个对象从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);
?> 

我错过了什么?谢谢你的帮助!

edit:我检查了$datastring,它包含了我想要的表单的所有值。保存为对象

您必须给出数据对象名称的属性,否则将出现错误:

$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"];

尝试更改

$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代码的其余部分也类似。

创建对象的方式使每个值都成为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"];