uniapp request中data传递数组值的时候,数组没有正确的被传递
[内容]
使用uni.request传递数组,比如
uni.request({
method: 'POST',
header: {
'content-type': 'application/x-www-form-urlencoded',
},
dataType: 'json',
url: 'http://api.cn',
data: {
a: [1,2]
}
})
[结果]
得到的请求数据
a: 1,2
[期望]
期望得到的请求数据
a: 1
a: 2
14 个回复
1***@qq.com - 刚接触uniapp的一只小白
我是json了下就能传递数组了
dyjx2004
已经解决了 前端用JSON.stringify传递后
后端php再用 json_decode(stripcslashes(html_entity_decode(***)),true);
最后就成数组了 如果不加最后的true 会变成object
sharno - 接活,付费咨询q153238536
这个头不要加试试
乐天愁 (作者)
换成 application/json 是可以的。但是application/x-www-form-urlencoded的行为是错误的
2019-09-18 15:47
1***@163.com
解决了吗
乐天愁 (作者)
还没有,官方也没有回复
2019-10-06 17:35
QQ375776626 - 80后
同样的疑惑
千尺梦
直接将数组用qs转换成a=2&a=3&a=5这种格式拼在url后面算了
乐天愁 (作者)
post提交,放url不合适
2019-12-11 13:35
z***@163.com
请问一下这个问题有什么解决方案吗?我现在也是post请求传递不了数组
Absorbed66c - 码农一枚
这个问题什么时候能修复呢??
2***@qq.com - hjw1203
同问题呀,有没有什么办法
小书1998
请问解决没有啊 post请求时数组会变成对象报400
jasonw
也遇到此问题,两种方式,
方案一、前后端都调整,都采用application/json的方式提交和接收。
方案二、将提交的参数转为字符串即可。
方案二的转换代码如下,供参考:
7***@qq.com
{"id[0]":1,"id[1]":2}
f***@outlook.com
mark
6***@qq.com
2021-11.25 遇到同样问题。post 请求的参数里面有数组,content-type 为application/json。 在小程序工具中,查看netWork 出现一样问题
post 请求参数例如 params = {name:'test', testArr:['test1','test2']}
会被转成 params = {name:'test', testArr:{
'0':'test1',
'1':test2
}}
----------------------------------解决方法-------------------------------------
post 请求时,先把 params = JSON.stringify(params) 转成纯字符串
在自己封装的uni.request 的 http.js 中,即拦截层,做一层处理
uniRequest.interceptors.request.use(
(request) => {
request.data = JSON.parse(request.data)
}
)
x***@126.com
正解
2022-01-25 11:31