Javascript 我的PHP代码没有';无法接收JSON数据
我有一个html表单,它使用jquery脚本获取数据,然后推送到一个php文件,通过电子邮件发送给我 jQuery:Javascript 我的PHP代码没有';无法接收JSON数据,javascript,php,jquery,json,Javascript,Php,Jquery,Json,我有一个html表单,它使用jquery脚本获取数据,然后推送到一个php文件,通过电子邮件发送给我 jQuery: 'use strict'; var isValidElement = function isValidElement(element) { return element.name && element.value; }; var isValidValue = function isValidValue(element) { return ![
'use strict';
var isValidElement = function isValidElement(element) {
return element.name && element.value;
};
var isValidValue = function isValidValue(element) {
return ![
'checkbox',
'radio'
].includes(element.type) || element.checked;
};
var isCheckbox = function isCheckbox(element) {
return element.type === 'checkbox';
};
var isMultiSelect = function isMultiSelect(element) {
return element.options && element.multiple;
};
var getSelectValues = function getSelectValues(options) {
return [].reduce.call(options, function (values, option) {
return option.selected ? values.concat(option.value) : values;
}, []);
};
var formToJSON = function formToJSON(elements) {
return [].reduce.call(elements, function (data, element) {
if (isValidElement(element) && isValidValue(element)) {
if (isCheckbox(element)) {
data[element.name] = (data[element.name] || []).concat(element.value);
} else if (isMultiSelect(element)) {
data[element.name] = getSelectValues(element);
} else {
data[element.name] = element.value;
}
}
return data;
}, {});
};
var handleFormSubmit = function handleFormSubmit(event) {
event.preventDefault();
var data = formToJSON(form.elements);
var request;
request = $.ajax({
url: "/dev/afelipeor/php/email.php",
type: "POST",
data: JSON.stringify(data)
});
// Callback handler that will be called on success
request.done(function (response, textStatus, jqXHR){
// Log a message to the console
console.log("Hooray, it worked!");
console.log(JSON.stringify(data))
$('.card').addClass('hide').after(emailSent);
});
// Callback handler that will be called on failure
request.fail(function (jqXHR, textStatus, errorThrown){
// Log the error to the console
console.error(
"The following error occurred: "+
textStatus, errorThrown
);
});
};
var form = $('#contact-form')[0];
form.addEventListener('submit', handleFormSubmit);
而php:
<?php
$_POST = json_decode(file_get_contents('php://input'), true);
$data = $_POST['data'];
$to = "myemail@afelipeor.com";
$subject = "Contact Form";
$message = $data;
mail($to,$subject,$message,"This is an automated email from the contact form", "From: system@afelipeor.com\r\n");
?>
jQuery代码运行正常,并输出预期的结果。但是,每次我收到电子邮件时,邮件部分都是空的
我查看了整个互联网和堆栈溢出,并尝试了我发现的一切,但我仍然无法修复它
任何帮助都将不胜感激。数据似乎是一个对象,可能是
$message=var\u dump($data)代码>可以吗?在您尝试分配php脚本之前,数据
是什么样子的?$\u POST
是一个保留的超全局变量。试图覆盖它是一个非常糟糕的主意,除非你确切知道自己在做什么。在任何情况下,您是否在输入上尝试了var\u dump
?添加var\u dump($\u POST,file\u get\u contents($)php://input'));在第一行之前输入code>并查看您得到了什么。如果您注释掉/$\u POST=json\u decode(file\u get\u contents($),那么print\r($\u POST)
会显示什么php://input",对),代码>?@Devisioner和Ed,我尝试了你的建议,但结果相同。AbraCadaver,print\r($\u POST)
没有做任何事情。我是php新手,所以可能是因为我做错了什么,data
似乎是一个对象,可能是$message=var\u dump($data)代码>可以吗?在您尝试分配php脚本之前,数据
是什么样子的?$\u POST
是一个保留的超全局变量。试图覆盖它是一个非常糟糕的主意,除非你确切知道自己在做什么。在任何情况下,您是否在输入上尝试了var\u dump
?添加var\u dump($\u POST,file\u get\u contents($)php://input'));在第一行之前输入code>并查看您得到了什么。如果您注释掉/$\u POST=json\u decode(file\u get\u contents($),那么print\r($\u POST)
会显示什么php://input",对),代码>?@Devisioner和Ed,我尝试了你的建议,但结果相同。AbraCadaver,print\r($\u POST)
没有做任何事情。我是php新手,所以可能是因为我做错了什么