空白错误,通过ajax将数据提交到发送电子邮件的php文件。
空白错误,通过ajax将数据提交到发送电子邮件的php文件。
我有一个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("成功"); }), error: (function(data){ }) });
在signup.php中,我有以下内容:
问题出现的原因:
1. 试图通过POST JSON数据,但不成功。
2. 试图读取已发布的表单数据,尽管尝试了POST JSON。
解决方法:
建议不要发JSON,而是发普通的URL编码的表单数据,这样$_POST
将填充发送的值。
如果在数据字段中传递对象,它将被自动编码,因此您不必这样做'first_name='+encodeURIComponent(first_name)+'&last_name='+encodeURIComponent(last_name)+'&email_address'+encodeURIComponent(email_address)
。
此外,在您的PHP中,您尝试了一些字符串插值(将变量放入字符串中),但使用了单引号,您必须使用双引号。
以下是更新后的代码:
$.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);
})
});
您的更新对于硬编码的数据有效。但是当我尝试获取POST数据时遇到问题,当我在JavaScript中的ajax调用之前进行警告时,我的变量都有值...但是当我到达php时没有值。
您的更新代码如下:
$message = "New User\n$first_name\n$last_name\n$email_address";
邮件发送成功,但不会发送我的变量...即使我将变量发送到硬编码值
您忘记了去掉JSON内容类型,请现在尝试一下。
代码现在可以正常工作,但是我的$first_name显示为first_name...我的邮件是New Campaign first_name last_name email_address。