axios 请求数据,返回数据 data为空怎么办

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了axios 请求数据,返回数据 data为空怎么办相关的知识,希望对你有一定的参考价值。

参考技术A 传递数据格式的问题,axios 默认 application/json 而如果后端 需要application/x-www-form-urlencoded 可以通过 qs 或者 URLSearchParams 处理数据格式本回答被提问者采纳 参考技术B 回答

您好,async用于申明一个函数是异步的,await等待异步请求完成,await只能在async方法中使用注:在用axios发请求时如果使用了async··…await,那么在调用发请求的函数时也需要加上标注 async异步请求和await同步

提问

axios请求数据 接口提示日期不能为空 那么怎么可以获取数据时数据不为空

回答

axios 使用 post 发送数据时,默认是直接把 json 放到请求体中提交到后端的。也就是说,我们的 Content-Type 变成了 application/json;charset=utf-8 ,这是axios默认的请求头content-type类型。但是实际我们后端要求的 ‘Content-Type’: ‘application/x-www-form-urlencoded’ 为多见,这就与我们不符合。所以很多同学会在这里犯错误,导致请求数据获取不到。明明自己的请求地址和参数都对了却得不到数据

提问

连接axios接口怎么让列表数据跟着选择月份框值变化查询

回答

在插页中做个公式,前表单元格减后表单元格

提问

axios为什么发送请求的参数是空对象

回答

修改content-type的类型

提问

在哪里修改 怎么改

回答

Content-Type需要设置charset字符编码,只有字符才需要设置。

react.js 使用 axios 发布数据到 php,但是 php echo 为空

【中文标题】react.js 使用 axios 发布数据到 php,但是 php echo 为空【英文标题】:react.js using axios to post data to php, but php echo empty 【发布时间】:2018-02-26 17:35:41 【问题描述】:

我正在使用 react.js、axios 和 PHP 将数据发布到 MySQL 数据库

这是我的 react.js 代码

sendData()
var data = new FormData();
data.append('name', 'jessie');
data.append('time', '12:00');
data.append('food', 'milk');
data.append('nutrition', 'vitaminA');
axios.post(
'./sendData.php',
  data: data

)
.then(response => 
console.log(response)
console.log(response.data)
this.filter = response.data
)
.catch(e => 
this.errors.push(e)
)

这是我的 PHP 代码

<?php
$servername = "127.0.0.1";
$username = "root";
$password = "";
$database = "mydb";


$conn = new mysqli($servername, $username, $password, $database);


if ($conn->connect_error) 
die("Connection failed: " . $conn->connect_error);

echo "Connected successfully yayaya";
echo "the post after this";
echo json_encode($_POST);

?>

这是我的 Chrome 控制台

Connected successfully yayayathe post after this[]

我不知道为什么我的 PHP 得到空数据并回显空值。

【问题讨论】:

【参考方案1】:

根据axios docs

默认情况下,axios 将 JavaScript 对象序列化为 JSON。

一个选项是read json from the body in your PHP code:

$entityBody = file_get_contents('php://input');

那你的数据就不用FormData包装了,直接添加就行了:

axios.post(
'./sendData.php',
  data: 
    name: 'jessie',
    time: '12:00',
    food: 'milk',
    nutrition: 'vitaminA'
  
)

另一种选择是在 axios 中设置Content-type 标头:

axios.post(
  './sendData.php',
  data: data
  
    headers: 
      'Content-type': 'multipart/form-data'
    
  
)

选项 1 对我来说似乎更好

【讨论】:

我使用选项 1,但它也控制台连接成功 yayaya[]【参考方案2】:

尝试从 phpinput 中获取 json,这对我来说是 halpfull:

echo file_get_contents('php://input');
echo json_decode(file_get_contents('php://input'), true);

【讨论】:

感谢您的回答,但我的 chrome 控制台我连接成功 yayaya"name":"jessie"注意 中的数组到字符串转换/Applications/XAMPP/xamppfiles/htdocs/foodMaster/build/sendData.php17 行 Array[] 并非所有数据都已回显 @ZakChen 好的,好的,现在尝试调试输入数据,并使用 json_decode 回显一些变体,而不是,您需要获取 json 字符串然后对其进行解码【参考方案3】:

不要使用 hack,为您的项目编写正确的代码。

首先在你的项目中安装这个qs 节点包。然后你就可以使用这个函数stringify你的数据,并将数据提交到服务器。

axios 已经在其文档文件中明确了该问题。您可以查看using-applicationx-www-form-urlencoded-format 链接了解更多信息。

在我的场景中使用简单的方法来解决这个问题,这里是我的代码:

var qs = require('qs');  
var palyload = 
    'command': 'userLogin',
    "email" : this.state.email,
    "password" : this.state.password,
;
axios.post( apiBaseUrl, qs.stringify(palyload) ).then(
    function(response)
        console.log(response);
    
);

然后你的 PHP 服务器显示正确的全局数据,如下所示:

Array
(
    [command] => userLogin
    [email] => asdf@test.com
    [password] => af12548@$
)

【讨论】:

以上是关于axios 请求数据,返回数据 data为空怎么办的主要内容,如果未能解决你的问题,请参考以下文章

用axios请求接口数据时,返回两层data数据,应该如何解决?

返回报文中,请求参数为空,该怎么解决

axios请求成功后怎么把数据返回到组件中

接口返回302 Found

使用 Axios 从 React 向 Django 发送数据 - 发布请求为空

vue axios用post请求的数据data是一个数组,怎么将它渲染在页面上?