axios使用笔记
1.Axios修改默认的Content-Type
post传递数据后端无法获取。axios使用,有他便利的地方,也有不便利的地方,我首先遇到的第一个问题就是使用post传递的时候,默认的请求头header是”Content-Type: application/json;charset=UTF-8”,问题是后台不认啊。
就算我设置了 content-type=application/x-www-form-urlencoded 也不起作用(这似乎是个bug,一直没解决,讨论地址 ,大部分的解决方案好像是引入一个qs库,对参数进行格式化,这有点蛋疼了。 )
错误请求代码:
1 | axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; |
最后解决方式是,在配置中添加了transformRequest函数,将data进行了拼接
1 | axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; |
使用qs函数库的解决方案:
1 | import QueryString from "qs"; |
1.qs.js - 更好的处理url参数
2.axios设置get请求Content-Type=’application/json;charset=UTF-8’无效
3.axios请求接口发起两次请求(OPTIONS 与POST/GET)
4.关于axios会发送两次请求,有个OPTIONS请求的问题
5.axios发送post请求,如何提交表单数据?
6.Using application/x-www-form-urlencoded format
7.Browser
8.axios用post提交的数据格式
9.axios post request to send form data
2.json字符串有一个奇怪的{“d”:null}
这倒是挺邪乎的,用打开新标签页的方式请求json数据的时候,一切都很好,但是用axios请求的时候,json解析时总是有错误,在返回的数据中莫名奇妙的多加了一个{“d”:null}。
正常的结尾:
不正常的结尾:
使用其他的jquery请求这个服务就没有问题,但是到了axios这里就不管事了,真是奇了怪了。按参考资料的意思,我可以修改后台,但是这不是解决办法啊。
问题出自这里,我自顾自的添加了,
1 | axios({ |
在请求的时候,请求头就变成了:
post请求应该是:
所以将自定义请求头去掉,然后结合上一步也就是第一个问题(post发送数据后端接收不到数据),共同处理,就可以解决这个奇怪的{“d”:null}。
1.Having strange {“d”:null} in JSON response
2.jQuery AJAX appending to Json return data “d:null”
3.请求的data不起作用
data参数,只有在请求类型为post时才会起作用。
1 | // `data` is the data to be sent as the request body |
3.设置Content-Type不起作用
在开发的时候设置get请求头的Content-Type总是失效,后来发现原来是一般get请求不需要设置Content-Type, 所以axios内部会自动删除掉
1.axios 用application/x-www-form-urlencoded 传参格式不对
2.axios 修改Content-Type设置
3.axios 全局变量默认Content-Type 无效问题
4.axios get请求设置请求头Content-Type不生效,失败 (这篇文章说get请求设置content-type不生效)
4.取消ajax请求
1.axios CancelToken 取消频繁发送请求的用法和源码解析
2.Axios取消请求CancelToken
3.github的axios内容 (这里其实也提到了如何创建一个可以取消的ajax请求)