美文网首页
解决axios后台无法获取参数的问题

解决axios后台无法获取参数的问题

作者: 5df463a52098 | 来源:发表于2018-06-20 14:16 被阅读1385次

使用axios传递参数时,后台处理接口的方式不同,导致前端的数据,后台接受不到。
代码如下:

axios({
            method: 'post',
            url: url,
            data: data,
            timeout: TIME_OUT_MS,
            headers: {
                 'Content-Type': 'application/json; charset=UTF-8'  
            }
        }).then(
            (result) => {
                response(handleResults(result))
            }
        ).catch(
            (error) => {
                if (exception) {
                    exception(error)
                } else {
                    console.log(error)
                }
            }
        )

比如上面的代码,前端传给后台的就是json,后台就会用json的方式去处理数据。
但是有时后台需要接收FormData传递的数据,这样的话,上面的代码就不适用了,需要修改。

解决方式:

1、使用URLSearchParams

var params = new URLSearchParams();
        params.append('userAccount', 'test');
        params.append('passWord', '123456');
        axios.post(handleUrl(url), params, {
        })
            .then(function (response) {
                console.log(response);
            })

但是URLSearchParams有兼容性问题,IE上完全不兼容,要使用polyfill解决。所以这种方式不推荐使用。
2、使用qs和content-type
content-type设置为application/x-www-form-urlencoded; charset=UTF-8
使用qs:
npm install qs
import qs from ‘qs’
将传递的参数序列化,qs.stringify(data)

 axios({
            method: 'post',
            url: url,
            data: qs.stringify(data),
            timeout: TIME_OUT_MS,
            headers: {            
                'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
            }
        }).then(
            (result) => {
                response(handleResults(result))
            }
        ).catch(
            (error) => {
                if (exception) {
                    exception(error)
                } else {
                    console.log(error)
                }
            }
        )

很好,这样就解决问题了。

相关文章

网友评论

      本文标题:解决axios后台无法获取参数的问题

      本文链接:https://www.haomeiwen.com/subject/izfxyftx.html