axios请求与jquery请求的区别

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

jquery的'Content-Type'默认采用的是application/x-www-form-urlencoded

post 请求常见的数据格式(content-type)

Content-Type: application/json : 请求体中的数据会以 json 字符串的形式发送到后端

Content-Type: application/x-www-form-urlencoded:请求体中的数据会以普通表单形式(键值对)发送到后端

Content-Type: multipart/form-data: 它会将请求体的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。

 后端需要接受的数据类型为:application/x-www-form-urlencoded,我们前端该如何配置:

常见方法汇总:

1、【用 URLSearchParams 传递参数】代码简单,省事

需要注意的是: URLSearchParams 不支持所有的浏览器,但是总体的支持情况还是 OK 的,所以优先推荐这种简单直接的解决方案

let param =newURLSearchParams()

param.append('username','admin')

param.append('pwd','admin')

axios({    method:'post',    url:'/api/lockServer/search',    data: param})


2、’axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';

3、import Qs from 'qs'let data = {

    "username": "cc",

    "psd": "123456"}

axios({

    headers: {

        'Content-Type': 'application/x-www-form-urlencoded'    },

    method: 'post',

    url: '/api/lockServer/search',

    data: Qs.stringify(data)

})

你可能感兴趣的:(axios请求与jquery请求的区别)