在开发web的时候发现一个诡异的问题
querystring.stringify在处理大小为1的数组,提交到服务器后解析会丢失数组类型直接变成了字符串, 测试如下:
> const querystring = require("querystring");
> querystring.stringify({a:['1']})
'a=1'
> querystring.stringify({a:['1',"2"]})
'a=1&a=2'
> querystring.stringify({a:['1','2']})
'a=1&a=2'
> querystring.parse(querystring.stringify({a:['1','2']}))
{ a: [ '1', '2' ] }
> querystring.parse(querystring.stringify({a:['1']})) //a之前是数组的
{ a: '1' } //a变成了字符串
解决办法:
- 将a字符串化,
{a:JSON.stringify(['1'])}
,服务器端再用parse解析出来 - 服务器端判断a为字符串的时候将其转换为数组,
type of data.a === 'string' && data.a = [data.a]
网友评论