详细问题描述
uniapp request中data传递数组值的时候,数组没有正确的被传递
[内容]
使用uni.request传递数组,比如
uni.request({
method: 'GET',
dataType: 'json',
url: 'http://api.cn',
data: {
a: [1,2]
}
})
[结果]
得到的请求地址是: http://api.cn?a=%5B1%2C2%5D
[期望]
期望得到的请求地址:http://api.cn?a[]=1&a[]=2
尝试不使用data传递数据,改为:
uni.request({
method: 'GET',
dataType: 'json',
url: 'http://api.cn?a[]=1&a[]=2',
data: {}
})
得到的请求地址是 http://api.cn?a[]=2,第一个值被抛弃了。这种该怎么处理
6 个回复
乐天愁 (作者)
还有一个问题,如果data传递的是query string,会被分割。比如:a=1&b=2 会被处理成 0=a&1==&2=&&3=b&4=c&5=2
DCloud_UNI_FXY
预计下个版本修复http://api.cn?a[]=1&a[]=2丢失数据的问题
data 为 query string 的问题也会同步修复,与小程序保持一致(应该是被直接丢弃了)
根据规范,以下请求是会把[1,2]转换成 json 字符串的。所以如果要传递数组参数,那还是自己在 url 后边直接拼接数组参数。
乐天愁 (作者)
了解,辛苦了【比心】
2019-08-17 17:44
7***@qq.com
FYI,下一条评论
2019-10-24 17:05
7***@qq.com
建议借鉴axios等的做法,把数组转一下再放到参数里,开发者已经习惯这种调用
axios源码部分供参考
zhiye
同问这个问题???
z***@163.com
同问,头大了
DCloud_uniCloud_WYQ
这个问题已经修复了,你那里还能复现吗?
2020-03-11 12:26
DCloud_uniCloud_WYQ
如果有问题,可以上传一份demo我们验证一下
2020-03-13 14:12
w***@163.com
你可以试试把data的数组那一项赋值为JSON.stringify(数组)。我是这么解决的。
2020-04-17 18:01
蜗牛小弟
目前3.6.18模式下还是存在这个问题。
相关链接https://ask.dcloud.net.cn/question/161703