所以我试图将一个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,它拥有我想要的表单的所有值。保存为对象
答案 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代码类似。