因为get方法,前端一般不会主动自己传数组参数
method: get
param = {
a: ["1", "2", "3"]
}
一般不会这样传
post方法,前端传数组参数
var params = ["1", "2", "3"]
fetch("/test/api" , {
method: "POST",
params: params.join(",") // 方法一: "1,2,3"
params: JSON.stringify(params) // 方法二:"["1", "2", "3"]' json字符串,后端自己解析JSON.parse()
)
前端传数组参数,无可避免
arr = ["1" , "2", "3"]
str = ""
for(var i in arr) {
str += "param=" + arr[i] + "&"
}
str: param=1¶m=2¶m=3
fetch(`/test/api?${str}` , { method: "get" })
借助序列化插件
npm install qs- qs.stringify({ a: [“b”, “c”, “d”] }); // a[0]=b&a[1]=c&a[2]=d
- qs.stringify({ a: [“b”, “c”, “d”] }, { indices: false }); // a=b&a=c&a=d
- qs 还可以通过
arrayFormat选项进行格式化输出
扩展 axios 配置
- axios中有一个专门对数据进行序列化的配置属性paramsSerializer
paramsSerializer: function(params) {
return qs.stringify(params,{arrayFormat: 'brackets'})
}
- Jquery $ 有个属性
traditional: true
参考文献
结语
前端react QQ群:
788023830----React/Redux - 地下老英雄前端交流QQ群:
249620372----FRONT-END-JS前端(我们的宗旨是,为了加班,为了秃顶……,仰望大佬),希望小伙伴们加群一起学习