【问题标题】:is there any problem in my vue or php code?我的 vue 或 php 代码有什么问题吗?
【发布时间】:2021-12-25 11:02:40
【问题描述】:

VUEjs 代码:

  const API_URL = "http://localhost:8880/php/";
  axios({
    method: "post",
    url: API_URL + "test.php",
    data: {
      optn: "procdata",
      mdate1: this.mdate1,
      mdate2: this.mdate2,
      mmcc: "",
    },
  }).then((respone) => {
    console.log(respone);
  });

PHP 代码:

header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Headers: Content-Type");
header('Access-Control-Allow-Methods: POST, GET, DELETE, PUT, PATCH, OPTIONS');
header('Access-Control-Allow-Headers: token, Content-Type');

echo $_POST['optn'];
echo $_POST['mdate1'];
echo $_POST['mdate2'];
echo $_POST['mmcc'];

我在浏览器控制台中收到此错误作为响应:


注意:未定义的索引:optn in F:\xampp\htdocs\php\test.php 行 7
通知:未定义索引:mdate1 in F:\xampp\htdocs\php\test.php 行 8

【问题讨论】:

  • @vee 感谢您的链接。但它只是显示如何删除警告。但是我想知道为什么我的 post 方法不起作用?
  • 从这些通知消息中可以清楚地看出,当您访问 PHP 代码时,您的 POST 值不存在。 建议: ajax 方法中的 URL 应始终为绝对路径(在您的情况下为 /php/test.php)。 Also check this link out and try performing the post request the same way in the example.
  • 未定义索引 nnn 表示数组键 nnn 未设置。在您的情况下,这意味着没有$_POST['optn'] 和mdate。因此,请检查您的 JS 代码 (Vue) 以确保您已设置这些值。尝试使用var_dump($_POST) 进行调试,以查看发送到服务器的 POST 数据。
  • mdate2 和 mmcc 是否也有错误?

标签: php vue.js axios


【解决方案1】:

我在

中发现了问题

PHP 代码:

if($_SERVER["REQUEST_METHOD"]=="POST" && empty($_POST))
{
    //CONVERT THE POST INPUT REQUEST TO POST ARRAY
    $_POST = json_decode(file_get_contents('php://input'),true);
}

在使用$_POST之前,我们需要在php中编写上述代码

【讨论】:

  • 我相信您所做的是将请求正文解析为 JSON。这是必要的,因为默认情况下,Axios 会发送编码为application/json 的有效负载。另一种方法是保持 $_POST 不变,并将您的 JavaScript 代码中的请求更改为 application/x-www-form-urlencoded,这是 PHP 开箱即用的支持。见axios-http.com/docs/urlencoded。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多