在vue中使用axios请求中,请求失败原因添加qs的序列化数据处理

1、写在前面

Vue 要实现异步加载需要使用到一些插件库,在于后台交互的时候,需要发送请求传递数据,最常用的库有
第一种:vue-resource
第二种:axios 【推荐使用】
Vue.js 2.0 版本推荐使用 axios 来完成 ajax 请求。
Axios 是一个基于 Promise 的 HTTP 库,可以用在浏览器和 node.js 中。
Github开源地址:https://github.com/axios/axios
菜鸟教程地址:https://www.runoob.com/vue2/vuejs-ajax-axios.html

2、问题

在使用axios中,利用axios发送请求的时候,有时候会报一个错误:请求失败
最后使用qs进行数据序列化解决了该问题,

类似于在使用vue-resource插件的时候,发送post请求必须添加第三个参数:{emulateJSON:true}

查询了很多资料,原来是因为数据请求的时候没有序列化的原因

打印内容:
在这里插入图片描述
请求头内容:
在这里插入图片描述
请求失败代码,未进行序列化转换
在这里插入图片描述

3、qs序列化的使用

因为Web服务器可能无法处理编码为 application/json 的请求,所以就需要使用qs插件进行转换

3.1、安装

npm install qs

main.js配置文件中引入

// 引入资源
import Qs from "qs";

// 将该方法加入内存中去,方便随时的调用
Vue.prototype.$QS = qs;
3.2、使用方法【全局与局部】

全局引入,加入内存当中【只用在main.js中引入一次】

this.$QS.stryingify() // 使用

随时的局部引入【每次都要引用】

import qs from 'qs'; //引入 == 局部引入不需要在main.js配置中引入

qs.stryingify() //使用

4、问题解决后查看数据内容

打印内容
在这里插入图片描述

请求头内容:
在这里插入图片描述

修改后代码,对数据进行序列化处理,变为后台可以处理的键值对格式
在这里插入图片描述

qs.stryingify() 关键是这一步,将参数对象转变为key=value格式,这才是后端所需要的

注意:qs是查询字符串解析和将对象序列化的插件库;而vue在请求的时候,当对后台发送请求的时候,在data中有数组时,是需要序列化才能与后台进行交互

qs主要有两种使用方法:

qu.stringify() : 对象序列化
qs.parse() : 序列化内容转换为对象

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue使用axios请求数据,并且在v-for指令渲染数据时,如果结构没有显示出来,可能存在以下几个可能的问题: 1. 没有正确引入axios:在Vue项目,首先要确保已经正确安装并引入了axios依赖包,可以通过在项目的入口文件或者单独的组件使用import语句来引入axios,例如:import axios from 'axios'。 2. 请求数据的路径错误:在使用axios发送请求时,必须确保请求的路径是正确的,即与后端提供数据的API接口一致。可以通过在浏览器的控制台查看网络请求来确定是否成功发送了请求,并且获取了正确的数据。如果请求路径错误,可以尝试重新检查请求的路径是否正确。 3. 数据结构不正确:在使用axios请求数据后,可能还需要对获取到的数据进行处理,以符合v-for指令的渲染要求。例如,如果获取到的数据是一个对象,而v-for指令需要的是一个数组,则需要将对象转化为数组,然后再进行渲染。 4. 异步请求数据的时机问题:由于axios请求数据是异步的,所以需要确保在数据请求完成后才进行渲染。可以通过使用Vue的生命周期钩子函数,如created或mounted,来保证数据已经获取到后再进行渲染。 综上所述,如果在Vue使用axios请求数据后,v-for指令没有正确渲染数据,可能需要检查axios的引入和使用是否正确、请求路径是否正确、数据结构是否符合要求以及异步请求数据的时机是否正确。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值