realmente, o HTML é melhor em iluminar isso. <input name="user[name]" /> <input name="user[email]" />dentro de um <form>contêiner sabe exatamente como enviar por padrão em todos os navegadores. as entradas se tornarão `usuário [nome] = SOMETEXT & usuário [email] [email protected] --- é o aplicativo host que é necessário para lidar com a decodificação de volta em uma matriz
Garet Claborn
Respostas:
153
Isso depende do que o servidor de destino aceita. Não existe um padrão definitivo para isso. Veja também ao Wikipedia: Query string :
Embora não haja um padrão definitivo, a maioria das estruturas da web permite que vários valores sejam associados a um único campo (por exemplo field1=value1&field1=value2&field2=value3). [4] [5]
Geralmente, quando o servidor de destino usa uma linguagem de programação de tipo forte como Java ( Servlet ), você pode simplesmente enviá-los como vários parâmetros com o mesmo nome. A API geralmente oferece um método dedicado para obter vários valores de parâmetro como uma matriz.
E, quando o servidor de destino usa uma linguagem de tipo fraco , como PHP ou RoR, você precisa sufocar o nome do parâmetro com colchetes []para acionar a linguagem para retornar uma matriz de valores em vez de um único valor.
Observe que, ao enviar foo[]=value1&foo[]=value2&foo[]=value3para um Servlet Java, você ainda pode obtê-los, mas precisará usar o nome exato do parâmetro incluindo as chaves.
quando o servidor usa nodeJs, você pode simplesmente passar array como foo = [valor1, valor2, valor3]. Ao obter esta rota expressa interna com req.query, você obterá {foo: '[valor1, valor2, valor3]'}. Você só precisa analisá-lo e usar esta matriz em seu código
Akshay Barpute
184
Sei que esta postagem é muito antiga, mas tenho que responder porque embora a resposta do BalusC esteja marcada como correta, ela não está totalmente correta.
Você deve escrever a consulta adicionando "[]" ao foo assim:
Que bom que você respondeu a este post antigo! Definitivamente ajudou.
Tha Leang
@BalusC incorreto, funciona perfeitamente bem em C / C ++ / C # (e pode funcionar em java). É apenas o seu uso de Java que faz com que nomes idênticos sejam interpretados como tais. No entanto, sua resposta é o uso incorreto da formatação URI
<input name="user[name]" /> <input name="user[email]" />
dentro de um<form>
contêiner sabe exatamente como enviar por padrão em todos os navegadores. as entradas se tornarão `usuário [nome] = SOMETEXT & usuário [email] [email protected] --- é o aplicativo host que é necessário para lidar com a decodificação de volta em uma matrizRespostas:
Isso depende do que o servidor de destino aceita. Não existe um padrão definitivo para isso. Veja também ao Wikipedia: Query string :
Geralmente, quando o servidor de destino usa uma linguagem de programação de tipo forte como Java ( Servlet ), você pode simplesmente enviá-los como vários parâmetros com o mesmo nome. A API geralmente oferece um método dedicado para obter vários valores de parâmetro como uma matriz.
O
request.getParameter("foo")
também funcionará nisso, mas retornará apenas o primeiro valor.E, quando o servidor de destino usa uma linguagem de tipo fraco , como PHP ou RoR, você precisa sufocar o nome do parâmetro com colchetes
[]
para acionar a linguagem para retornar uma matriz de valores em vez de um único valor.Caso você ainda use
foo=value1&foo=value2&foo=value3
, ele retornará apenas o primeiro valor.Observe que, ao enviar
foo[]=value1&foo[]=value2&foo[]=value3
para um Servlet Java, você ainda pode obtê-los, mas precisará usar o nome exato do parâmetro incluindo as chaves.fonte
Sei que esta postagem é muito antiga, mas tenho que responder porque embora a resposta do BalusC esteja marcada como correta, ela não está totalmente correta.
Você deve escrever a consulta adicionando "[]" ao foo assim:
fonte