【问题标题】:How to process axios request in PHP如何在 PHP 中处理 axios 请求
【发布时间】:2021-03-10 20:25:38
【问题描述】:

我正在尝试将数据发送到 PHP 文件。

我尝试添加{headers:{'content-type: application/JSON'}},但我仍然无法访问 PHP 中的数据。

Javascript:

axios.post("http://localhost/Contact_Manager/src/fetchcontacts.php",{action:'getcontacts'})
  .then(res => {
    let posts = res.data;
    commit('setposts',posts)
  })
  .catch(err => console.log(err))

PHP:

<?php
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: *');
header('Access-Control-Allow-Headers: *');
$db = mysqli_connect("localhost","root","","contacts");
if(!$db){
  die("failed to connect to database".mysqli_connect_error());
}
$recieved_data=json_decode(file_get_contents("php://input"),true);
var_dump($recieved_data->action)
?>

PHP 文件中有警告:

注意:试图在项目目录中获取非对象的属性“动作”

【问题讨论】:

标签: javascript php json axios


【解决方案1】:

只需将最后一行更改为var_dump($received_data); 即可查看真正收到的内容,它清楚地表明action 不是属性(并且$received_data 不是对象)而是数组。因此,您不能使用-&gt; 表示法,但需要使用[] 表示法来访问属性的值:

array(1) {
["action"]=>
string(4) "test"
}

var_dump($recieved_data["action"]); 应该会产生正确的输出。

背景: 传递true 作为json_decode() 的第二个参数告诉PHP 将您的输入解析为关联数组而不是对象(参见PHP Documentation)。如果要将其用作对象(即使用$received_data-&gt;action),则需要删除第二个参数或将其设置为false

【讨论】:

  • 这对任何一方都没有帮助,我的本地主机中的输出仍然为空。谢谢!
  • null 在哪里?在您的axios 回调中还是在 PHP 文件中?我用我的更改尝试了你的代码,并在 axios 承诺的then 部分添加了一个console.log(res.data),它正在输出正确的数据。但是,您没有返回任何输出 JavaScript 可以处理,因为 var_dump() 仅输出变量的一些可读表示。
  • php 文件正在输出 null,而我在 js 中的 then 部分也没有正常运行。我认为问题在于我提供给 axios 的本地主机地址。谢谢!
  • 顺便说一下,我的控制台记录的输出看起来像:
     C:\wamp64\www\Contact_Manager\src\ fetchcontacts.php:10:string 'getcontacts' (length=11) 
  • 谢谢伙计,你是对的。我并没有真正预料到那里发生了什么。感谢您参与这项运动!
猜你喜欢
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-06
  • 1970-01-01
  • 1970-01-01
  • 2011-03-05
相关资源
最近更新 更多