Javascript 无法在php文件中获取axios POST方法的属性
我尝试用php和axios发送邮件。我将数据存储在一些属性上,然后尝试通过axios调用post方法。无法发送带有空值的电子邮件。看起来我无法在php中获取此值Javascript 无法在php文件中获取axios POST方法的属性,javascript,php,axios,Javascript,Php,Axios,我尝试用php和axios发送邮件。我将数据存储在一些属性上,然后尝试通过axios调用post方法。无法发送带有空值的电子邮件。看起来我无法在php中获取此值 // js axios .post("./vendor/sendmail.php", { name: nameInput.value, email: emailInput.value, message: textarea.value }) .then
// js
axios
.post("./vendor/sendmail.php", {
name: nameInput.value,
email: emailInput.value,
message: textarea.value
})
.then(respond => {
console.log(respond);
})
.catch(error => {
console.log(error);
});
// php
<?php
$email = $_POST['email'];
$message = $_POST['message'];
$name = $_POST['name'];
$body = "Email: {$email}\n\nName: {$name}\n\nMessage: {$message}\n\n";
mail("myemail@gmail.com", 'A new message', $body, "From: test@gmail.com");
?>
//js
axios
.post(“./vendor/sendmail.php”{
名称:nameInput.value,
电子邮件:emailInput.value,
消息:textarea.value
})
.然后(回复=>{
控制台日志(响应);
})
.catch(错误=>{
console.log(错误);
});
//php
我在我的收件箱里收到了这个:
电邮:
姓名:
信息:
(带有空值的电子邮件)Axios可能将其编码为JSON。您需要将输入读入PHP,而不是
$\u POST
变量。给我一分钟,去挖一些代码
它所做的是检测
内容类型
标题,如果它是应用程序/json
,那么它将把输入读入PHP并解码。它可以使用try/catch,以防JSON无效
function convertInput() {
if (!empty($_SERVER["HTTP_CONTENT_TYPE"])) {
$contentTypes = explode(";", $_SERVER["HTTP_CONTENT_TYPE"]);
if (in_array("application/json", $contentTypes)) {
$rawInput = file_get_contents('php://input');
return json_decode($rawInput, true);
}
}
return [];
}
观察浏览器控制台中的“网络”选项卡,单击请求,然后向下滚动标题,以验证发送的内容。还可以尝试
var\u转储($\u请求)
查看PHP文件接收的内容。@aynbe它是一个空数组:数组(0){}
是否检查浏览器中的“网络”选项卡以确保发送了post值?请求是否被重定向到任何地方?是的,我在“请求有效负载”部分的“网络”选项卡中检查了请求。我的所有值都在一个对象中。它不是重定向。请求URL是php文件。修改superglobals是一个非常复杂的过程,因为您将覆盖$\u POST
中已有的所有数据。还有,为什么要使用getallheaders()?内容类型头在$\u服务器['HTTP\u Content\u Type']
中可用。当然,我同意你的看法。这是从我5年前或者7年前创建的一个项目中撕下来的。我已经编辑了我的答案。谢谢你的回答,但我不明白。你是说我用axios发送的值是正确的还是什么?我尝试了$data=json\u decode(file\u get\u contents('php://input",对),代码>成功了!