Javascript - 如何将数组作为url参数传递

Lef*_*eff 16 javascript jquery laravel

我想传递一个数组并添加到我的页面上的链接作为url参数,因为稍后在服务器端我需要数组中的值.我该怎么办?

myArray = ['aaa', 'bbb', 'ccc'];

$('#myLink').attr({"href" : '/myLink?array=' + myArray});
Run Code Online (Sandbox Code Playgroud)

我不确定这是否是正确的做法?

Rod*_*igo 28

您可以序列化JSON:

myArray = ['aaa', 'bbb', 'ccc'];
var arrStr = encodeURIComponent(JSON.stringify(myArray));
$('#myLink').attr({ href: '/myLink?array=' + arrStr });
Run Code Online (Sandbox Code Playgroud)

如果您的解析(在下一页上)也是通过JavaScript完成的,那么您将反过来使用JSON.parse().在PHP中它将是json_decode().


bma*_*ovu 9

我会采用这种方法,

var myArray = ['aaa', 'bbb', 'ccc', ];

var myArrayQry = myArray.map(function(el, idx) {
    return 'myArray[' + idx + ']=' + el;
}).join('&');

// myArray[0]=aaa&myArray[1]=bbb&myArray[2]=ccc
Run Code Online (Sandbox Code Playgroud)

然后,我在服务器端检索 URL 查询参数作为数组。


Lit*_*nti 7

它不应该依赖于服务器端:根据URI标准规范,所有参数必须具有一个名称,并且应该具有一个值.但是可以有几个具有相同名称的参数,这是序列化数组的正确方法:

HTTP://服务器/上下文阵列= AAA&阵列= BBB&阵列= CCC&otherparameter = X

你可以这样做:

var s="";
for (var i=0;i< myArray.length;i++)
{
  s+="&myArray="+myArray[i];
}
var url="http://server/context?"+s;
Run Code Online (Sandbox Code Playgroud)

  • 这很好,但需要将 `s+="&amp;myArray="+myArray[i];` 编辑为 `s+="&amp;myArray[]="+myArray[i];` (3认同)

小智 6

试试这个

$('#myLink').attr({"href" : '/myLink?array=' + myArray.join(',')});
Run Code Online (Sandbox Code Playgroud)

在服务器上:捕获和分割数据.