get方法,传参为数组

122 阅读1分钟

因为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&param=2&param=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

参考文献

blog.csdn.net/kelly0721/a…

blog.csdn.net/feinifi/art…

结语

前端react QQ群:788023830 ---- React/Redux - 地下老英雄

前端交流QQ群:249620372 ---- FRONT-END-JS前端

(我们的宗旨是,为了加班,为了秃顶……,仰望大佬),希望小伙伴们加群一起学习