我有一个ajax调用,它将一些数据(名字,姓氏,电子邮件)发送到一个php文件,该文件应该给我发电子邮件。我发送的数据存在,我已经检查过了。当我运行它时,我得到一个空白错误。我错过了一些容易的事吗?有什么建议?
$.ajax({
type: 'POST',
url: 'signup.php',
data: { first_name: 'first_name', last_name: 'last_name', email_address: 'email_address'},
contentType: 'application/json; charset=utf-8',
async: false,
success: (function() {
alert("Successful");
}),
error: (function(data){
})
});
在signup.php中我有以下内容:
<?php
// Get User Information From AJAX Post
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$email_address = $_POST['email_address'];
//Set Email Information
$to = 'example@example.com';
$subject = 'New User';
$message = "New User\n$first_name\n$last_name\n$email_address";
$headers = 'From: example@example.com'. "\r\n";
//Send Email
mail($to, $subject, $message, $headers);
?>
答案 0 :(得分:2)
你的问题是
我建议不发布json,但是普通网址编码表单数据,那样$_POST
将填充发送的值。
如果您在数据字段中传递一个对象,它将为您编码,因此您无需执行'first_name='+encodeURIComponent(first_name)+'&last_name='+encodeURIComponent(last_name)+'&email_address'+encodeURIComponent(email_address)
$.ajax({
type: 'POST',
url: '/signup.php',
data: {'first_name': first_name, 'last_name': last_name, 'email_address': email_address},
async: false,
success: (function() {
alert("Successful");
}),
error: (function(ts){
alert(ts.responseText);
})
});
同样在你的php中你尝试一些字符串插值(将变量放在一个字符串中),但你使用单引号,你必须使用双引号。
$message = "New User\n$first_name\n$last_name\n$email_address";