向URL添加参数,将数组放入查询字符串

时间:2016-09-23 15:06:12

标签: javascript jquery arrays url query-string

目的

我建立了一个互动,人们可以选择六名球员来组建他们的全明星球队。当他们点击分享到Twitter时,我希望有一个包含所有六个参与者的参数的网址,例如website.com/?playerName=picked?playerName=picked,以便人们可以分享他们的团队

问题

  • 将参数附加到网址的最佳方法是什么?
  • 如何将数组放入查询字符串?

3 个答案:

答案 0 :(得分:3)

您可以直接在网址中使用数组,但是您需要将数组序列化为字符串。像这样player[]=one&player[]=two

这是一个自动化的小功能。

使用网址时,您应始终使用encodeURIComponent对任何非网址友好字符进行编码。玩家是一个数组,所以我们映射它并获得一个已编码的新数组。

之后我们只需要使用&

加入数组

const players = [
  'player Name 1',
  'playerName2',
  'playerName3'
]

const parameterizeArray = (key, arr) => {
  arr = arr.map(encodeURIComponent)
  return '?'+key+'[]=' + arr.join('&'+key+'[]=')
}

console.log(parameterizeArray('player', players))

修改

唯一的区别是函数声明样式,其他一切都是标准的ES5

function parameterizeArray(key, arr) {
  arr = arr.map(encodeURIComponent)
  return '?'+key+'[]=' + arr.join('&'+key+'[]=')
}

答案 1 :(得分:2)

清洁工:

website.com/?players=player1,player2,player3,player4

然后拆分查询以获取结果:

var arrayResult = query.players.split(",")

答案 2 :(得分:0)

我不确定你是否可以编码数组,如果可以的话,它可能是特定于框架的

查询字符串的格式为?a=1&b=2&c=3&...,添加很简单。你绝对可以传递6个玩家作为上面的参数

编辑:每个请求,查询字符串看起来像

website.com/?player1=foobar&player2=foobuz&player3=foobaz