在axios中使用params.append时,可能会遇到奇怪的行为,即在参数值中包含逗号时,参数值会被拆分成多个参数,导致服务器无法正确解析参数。
这个问题的解决方法是将逗号在发送请求前进行编码,然后在服务器端进行解码。具体代码如下:
axios({
method: 'POST',
url: '/api/example',
paramsSerializer: function(params) {
let result = '';
for (let key in params) {
if (params.hasOwnProperty(key)) {
const value = encodeURIComponent(params[key]);
result += ${key}=${value}&
;
}
}
return result.substr(0, result.length - 1);
},
params: {
name: 'John, Doe',
age: 30
}
}).then(response => {
console.log(response);
}).catch(error => {
console.error(error);
});
在这个示例中,我们重写了axios的paramsSerializer函数,使用encodeURIComponent对参数值进行编码,避免了参数值中逗号导致的问题。