首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在php文件中获取axios POST方法的属性

问无法在php文件中获取axios POST方法的属性
EN

Stack Overflow用户
提问于 2019-07-15 22:04:49
回答 1查看 229关注 0票数 1

我尝试用php和axios发送邮件。我将数据存储在一些属性上,然后尝试通过axios调用post方法。电子邮件已发送,但值为空。看起来我不能在php中得到这个值。

代码语言:javascript
复制
// 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");
?>

我在我的收件箱里看到了:

电子邮件:

名称:

消息:

(值为空的电子邮件)

EN

回答 1

Stack Overflow用户

发布于 2019-07-15 22:07:56

Axios可能正在将其编码为JSON。您需要将输入读入PHP,而不是$_POST变量。给我一点时间,我要找出一些代码。

它所做的是检测PHP头,如果它是application/json,那么它将把输入读取到Content-Type中并解码它。它可以使用try/catch,只是在JSON无效的情况下。

代码语言:javascript
复制
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 [];
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57041458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档