web-dev-qa-db-fra.com

Comment passer un tableau comme paramètre d'URL?

Je voudrais passer un tableau et ajouté à un lien sur ma page en tant que paramètre d'URL, car plus tard côté serveur, j'ai besoin des valeurs du tableau. Comment dois-je faire ça?

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

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

Je ne sais pas si c'est la bonne façon de procéder?

16
Leff

Vous pouvez sérialiser le JSON:

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

Si votre analyse (sur la page suivante) est également effectuée via JavaScript, vous utiliserez à l'inverse JSON.parse () . En PHP ce serait json_decode () .

27
Rodrigo

Il ne doit pas dépendre du côté serveur: selon la spécification standard URI, tous les paramètres doivent avoir un nom et une valeur. Mais il peut y avoir plusieurs paramètres avec le même nom, ce qui est la bonne façon de sérialiser un tableau:

http: // serveur/contexte? array = aaa & array = bbb & array = ccc & otherparameter = x

Vous pouvez le faire comme ceci:

var s="";
for (var i=0;i< myArray.length;i++)
{
  s+="&myArray="+myArray[i];
}
var url="http://server/context?"+s;
6
Little Santi

essaye ça

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

sur le serveur: capture et partage des données.

5
JohnTrack

J'irais avec cette approche,

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

Ensuite, je récupère les paramètres de requête URL sous forme de tableau côté serveur.

1
bmatovu