2010-06-17 23 views

risposta

98

Dipende da ciò che il server di destinazione accetta. Non esiste uno standard definitivo per questo. Vedi anche a.o. Wikipedia: Query string:

Mentre non v'è alcuna norma definitiva, la maggior parte dei framework web consentono più valori da associare a un singolo campo (ad esempio field1=value1&field1=value2&field2=value3). [4][5]

In genere, quando il server di destinazione utilizza un forte tipizzato linguaggio di programmazione come Java (Servlet), allora si può semplicemente inviare loro come parametri multipli con lo stesso nome. L'API di solito offre un metodo dedicato per ottenere più valori di parametro come una matrice.

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

Il request.getParameter("foo") sarà anche lavorare su di esso, ma tornerà solo il primo valore.

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

E, quando il server di destinazione utilizza un debole lingua tipizzato come PHP o RoR, allora avete bisogno di suffisso il nome del parametro con bretelle [] al fine di innescare la lingua per restituire una matrice di valori, invece di un singolo valore

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

Nel caso in cui si utilizza ancora foo=value1&foo=value2&foo=value3, allora tornerà solo il primo valore.

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

si noti che, quando si invia foo[]=value1&foo[]=value2&foo[]=value3 ad un Servlet Java, allora si può ancora li ottenere, ma avresti bisogno di utilizzare il nome esatto del parametro incluse le parentesi graffe.

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

So che questo post è molto vecchio, ma devo rispondere perché, anche se la risposta di BalusC è contrassegnato come corretto, non è del tutto corretta.

Devi scrivere la query aggiungendo "[]" a foo come questo:

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

Sono contento che ha risposto a questo vecchio post! Ha sicuramente aiutato. –

+11

Questa risposta è corretta solo per gli utenti di linguaggi tipizzati deboli come PHP perché il '[]' viene effettivamente utilizzato come un lavoro interno per poter ottenere parametri con valori multipli. La mia risposta è stata aggiornata per chiarire meglio. Quindi la tua affermazione "non è completamente corretta" non è valida. La domanda originale era su Java, non su PHP. – BalusC

Problemi correlati