realmente, HTML es mejor para iluminar esto. <input name="user[name]" /> <input name="user[email]" />dentro de un <form>contenedor sabe exactamente cómo enviar de forma predeterminada en todos los navegadores. las entradas se convertirán en `user [name] = SOMETEXT & user [email] [email protected] --- es la aplicación host que se requiere para manejar la decodificación de nuevo en una matriz
Garet Claborn
Respuestas:
154
Eso depende de lo que acepte el servidor de destino. No existe un estándar definitivo para esto. Véase también ao Wikipedia: Cadena de consulta :
Si bien no existe un estándar definitivo, la mayoría de los marcos web permiten que se asocien múltiples valores con un solo campo (p field1=value1&field1=value2&field2=value3. Ej .). [4] [5]
Generalmente, cuando el servidor de destino usa un lenguaje de programación de tipo fuerte como Java ( Servlet ), entonces puede enviarlos como múltiples parámetros con el mismo nombre. La API generalmente ofrece un método dedicado para obtener múltiples valores de parámetros como una matriz.
Y, cuando el servidor de destino utiliza un lenguaje de tipado débil como PHP o RoR, entonces debe agregar el sufijo al nombre del parámetro con llaves []para que el lenguaje devuelva una matriz de valores en lugar de un solo valor.
Tenga en cuenta que cuando envía foo[]=value1&foo[]=value2&foo[]=value3a un Servlet de Java, aún puede obtenerlos, pero deberá usar el nombre exacto del parámetro, incluidas las llaves.
cuando el servidor usa nodeJs, simplemente puede pasar la matriz como foo = [valor1, valor2, valor3]. Cuando obtenga esta ruta expresa interna con req.query, obtendrá {foo: '[valor1, valor2, valor3]'}. Solo necesita analizarlo y usar esta matriz en su código
Akshay Barpute
184
Sé que esta publicación es muy antigua, pero tengo que responder porque aunque la respuesta de BalusC está marcada como correcta, no es completamente correcta.
Tienes que escribir la consulta agregando "[]" a foo así:
¡Me alegro de que hayas respondido a esta publicación anterior! Definitivamente ayudó.
Tha Leang
@BalusC incorrecto, esto funciona perfectamente bien en C / C ++ / C # (y puede funcionar en Java). Es solo su uso de Java lo que hace que los nombres idénticos se interpreten como tales. Sin embargo
<input name="user[name]" /> <input name="user[email]" />
dentro de un<form>
contenedor sabe exactamente cómo enviar de forma predeterminada en todos los navegadores. las entradas se convertirán en `user [name] = SOMETEXT & user [email] [email protected] --- es la aplicación host que se requiere para manejar la decodificación de nuevo en una matrizRespuestas:
Eso depende de lo que acepte el servidor de destino. No existe un estándar definitivo para esto. Véase también ao Wikipedia: Cadena de consulta :
Generalmente, cuando el servidor de destino usa un lenguaje de programación de tipo fuerte como Java ( Servlet ), entonces puede enviarlos como múltiples parámetros con el mismo nombre. La API generalmente ofrece un método dedicado para obtener múltiples valores de parámetros como una matriz.
El
request.getParameter("foo")
también va a trabajar en él, sino que va a devolver sólo el primer valor.Y, cuando el servidor de destino utiliza un lenguaje de tipado débil como PHP o RoR, entonces debe agregar el sufijo al nombre del parámetro con llaves
[]
para que el lenguaje devuelva una matriz de valores en lugar de un solo valor.En caso de que aún lo use
foo=value1&foo=value2&foo=value3
, devolverá solo el primer valor.Tenga en cuenta que cuando envía
foo[]=value1&foo[]=value2&foo[]=value3
a un Servlet de Java, aún puede obtenerlos, pero deberá usar el nombre exacto del parámetro, incluidas las llaves.fuente
Sé que esta publicación es muy antigua, pero tengo que responder porque aunque la respuesta de BalusC está marcada como correcta, no es completamente correcta.
Tienes que escribir la consulta agregando "[]" a foo así:
fuente