vraiment, HTML est meilleur pour éclairer cela. <input name="user[name]" /> <input name="user[email]" />à l'intérieur d'un <form>conteneur sait exactement comment soumettre par défaut dans tous les navigateurs. les entrées deviendront `user [name] = SOMETEXT & user [email] [email protected] --- c'est l'application hôte qui est nécessaire pour gérer le décodage dans un tableau
Garet Claborn
Réponses:
154
Cela dépend de ce que le serveur cible accepte. Il n'y a pas de norme définitive pour cela. Voir aussi ao Wikipedia: Chaîne de requête :
Bien qu'il n'y ait pas de norme définitive, la plupart des frameworks Web permettent d'associer plusieurs valeurs à un seul champ (par exemple field1=value1&field1=value2&field2=value3). [4] [5]
En règle générale, lorsque le serveur cible utilise un langage de programmation fortement typé tel que Java ( Servlet ), vous pouvez simplement les envoyer en tant que 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 forme de tableau.
Et, lorsque le serveur cible utilise un langage typé faible comme PHP ou RoR, vous devez alors suffixer le nom du paramètre avec des accolades []afin de déclencher le langage pour renvoyer un tableau de valeurs au lieu d'une valeur unique.
Notez que lorsque vous envoyez foo[]=value1&foo[]=value2&foo[]=value3à un servlet Java, vous pouvez toujours les obtenir, mais vous devez utiliser le nom exact du paramètre, y compris les accolades.
quand le serveur utilise nodeJs, vous pouvez simplement passer le tableau comme toto = [valeur1, valeur2, valeur3] .Lorsque vous obtenez cette route express interne avec req.query, vous obtiendrez {toto: '[valeur1, valeur2, valeur3]'}. Il vous suffit de l'analyser et d'utiliser ce tableau dans votre code
Akshay Barpute
184
Je sais que ce post est vraiment vieux, mais je dois répondre car bien que la réponse de BalusC soit marquée comme correcte, elle n'est pas complètement correcte.
Vous devez écrire la requête en ajoutant "[]" à toto comme ceci:
Heureux que vous ayez répondu à cet ancien message! Cela a vraiment aidé.
Tha Leang
@BalusC incorrect, cela fonctionne parfaitement bien en C / C ++ / C # (et peut fonctionner en java). C'est uniquement votre utilisation de Java qui fait que des noms identiques sont interprétés comme tels. Votre réponse est cependant une utilisation incorrecte du formatage URI
<input name="user[name]" /> <input name="user[email]" />
à l'intérieur d'un<form>
conteneur sait exactement comment soumettre par défaut dans tous les navigateurs. les entrées deviendront `user [name] = SOMETEXT & user [email] [email protected] --- c'est l'application hôte qui est nécessaire pour gérer le décodage dans un tableauRéponses:
Cela dépend de ce que le serveur cible accepte. Il n'y a pas de norme définitive pour cela. Voir aussi ao Wikipedia: Chaîne de requête :
En règle générale, lorsque le serveur cible utilise un langage de programmation fortement typé tel que Java ( Servlet ), vous pouvez simplement les envoyer en tant que 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 forme de tableau.
Le
request.getParameter("foo")
fonctionnera également dessus, mais il ne retournera que la première valeur.Et, lorsque le serveur cible utilise un langage typé faible comme PHP ou RoR, vous devez alors suffixer le nom du paramètre avec des accolades
[]
afin de déclencher le langage pour renvoyer un tableau de valeurs au lieu d'une valeur unique.Au cas où vous l'utilisez encore
foo=value1&foo=value2&foo=value3
, il ne renverra que la première valeur.Notez que lorsque vous envoyez
foo[]=value1&foo[]=value2&foo[]=value3
à un servlet Java, vous pouvez toujours les obtenir, mais vous devez utiliser le nom exact du paramètre, y compris les accolades.la source
Je sais que ce post est vraiment vieux, mais je dois répondre car bien que la réponse de BalusC soit marquée comme correcte, elle n'est pas complètement correcte.
Vous devez écrire la requête en ajoutant "[]" à toto comme ceci:
la source