2010-06-17 6 views

Répondre

98

Cela dépend de ce que le serveur cible accepte. Il n'y a pas de norme définitive pour cela. Voir aussi a.o. Wikipedia: Query string:

Bien qu'il n'y ait pas de norme définitive, la plupart des cadres Web permettent des valeurs multiples à associer à un seul champ (par exemple field1=value1&field1=value2&field2=value3). [4][5]

En général, lorsque le serveur cible utilise un langage de programmation forte typé comme Java (Servlet), alors vous pouvez simplement les envoyer comme paramètres multiples avec le même nom. L'API propose généralement une méthode dédiée pour obtenir plusieurs valeurs de paramètres sous la forme d'un tableau.

foo=value1&foo=value2&foo=value3 
String[] foo = request.getParameterValues("foo"); // [value1, value2, value3] 

Le request.getParameter("foo") travaillera également, mais il y retourner seulement la première valeur.

String foo = request.getParameter("foo"); // value1 

Et, lorsque le serveur cible utilise un faible langage typé comme PHP ou RoR, alors vous devez suffixe le nom du paramètre avec des accolades [] afin de déclencher la langue pour retourner un tableau de valeurs au lieu de une seule valeur.

foo[]=value1&foo[]=value2&foo[]=value3 
$foo = $_GET["foo"]; // [value1, value2, value3] 
echo is_array($foo); // true 

Si vous utilisez encore foo=value1&foo=value2&foo=value3, il va revenir que la première valeur.

$foo = $_GET["foo"]; // value1 
echo is_array($foo); // false 

Prenez note que lorsque vous envoyez foo[]=value1&foo[]=value2&foo[]=value3 à un Java Servlet, alors vous pouvez obtenir encore, mais vous aurez besoin d'utiliser le nom du paramètre exact y compris les accolades.

String[] foo = request.getParameterValues("foo[]"); // [value1, value2, value3] 
147

Je sais que ce post est vraiment vieux, mais je dois répondre parce que même si la réponse de BalusC est marqué comme correct, il est pas tout à fait correct.

Vous devez écrire la requête en ajoutant « [] » à foo comme ceci:

foo[]=val1&foo[]=val2&foo[]=val3 
+2

Heureux vous avez répondu à ce vieux poste! Cela a définitivement aidé. –

+11

Cette réponse n'est correcte que pour les utilisateurs de langages faiblement typés comme PHP car le '[]' est en fait utilisé comme un travail interne pour pouvoir obtenir des paramètres multi-valeurs. Ma réponse a été mise à jour pour clarifier cela plus. Donc, votre déclaration "ce n'est pas tout à fait correct" est invalide. La question initiale était sur Java, pas sur PHP. – BalusC

Questions connexes