最近尝试vue, 使用 axios 发送 post 请求 :
axios Example 里面是这样的:
// Performing a POST request
axios.post('/user', {
firstName: 'Fred',
lastName: 'Flintstone'
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
// Send a POST request
axios({
method: 'post',
url: '/user/12345',
data: {
firstName: 'Fred',
lastName: 'Flintstone'
}
});
上面的官方代码我怎么尝试都行不通, 不管怎样, 发送的都不是 post
, 而是 options
。
我在网上查看了一些解决方法,比如说使用兼容度并不怎么好的 URLSearchParams
和 引入 qs
, 或者直接 JSON.stringify
, 但是发送过去的数据就是纯字符串了,后端收到还需要转一下才能用,为什么不按照常规的方式来发送数据,就像 jQuery
的 ajax
方法一样。
那么问题来了, 我真的有必要为了发送 post 请求而使用兼容并不好的 URLSearchParams
或者为此引入一个 qs
库么?axios
到底有哪里好? 为什么官方的例子却行不通?
...。
这里的
options
应该是跨域(复杂跨域请求)的预先请求,用来确定有没有跨域权限。你拿
jquery.ajax
发跨域请求,也会有一个options
请求。和
vue
,axios
没有关系。和
vue
,axios
没有关系。和
vue
,axios
没有关系。qs转参数是因为axios默认支持
application/json
请求头与json数据格式。使用其他请求头和form-data的数据格式需要手动设置请求头和qs转换格式。
qs是用来做序列化的,JSON.stringify也是做序列化处理的,但你要知道他们序列化的结果是不一样的。