2010-06-17 2 views

Antwort

98

Das hängt davon ab, was der Zielserver akzeptiert. Dafür gibt es keinen definitiven Standard. Siehe auch a.o. Wikipedia: Query string:

Zwar gibt es keinen definitiven Standard, erlaubt die meisten Web-Frameworks mehr Werte mit einem einzigen Feld zugeordnet werden (z.B. field1=value1&field1=value2&field2=value3). [4][5]

Im Allgemeinen, wenn der Zielserver ein stark typisierte Programmiersprache wie Java (Servlet) verwendet, dann kann man sie einfach als mehrere Parameter mit dem gleichen Namen senden. Die API bietet normalerweise eine dedizierte Methode, um mehrere Parameterwerte als Array zu erhalten.

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

The request.getParameter("foo") wird auch daran arbeiten, aber es wird nur der erste Wert zurück.

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

Und wenn der Zielserver eine schwach typisieren Sprache wie PHP oder RoR verwendet, dann müssen Sie mit Klammern [] um die Parameternamen Suffix die Sprache auszulösen ein Array von Werten zurückzukehren, anstatt ein einzelner Wert.

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

Falls Sie noch foo=value1&foo=value2&foo=value3 verwenden, geben es wird dann nur der erste Wert.

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

Sie beachten Sie, dass, wenn Sie foo[]=value1&foo[]=value2&foo[]=value3 an ein Java-Servlet schicken, dann können Sie immer noch erhalten, aber Sie würden die genauen Parameternamen einschließlich den geschweiften Klammern verwenden müssen.

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

Ich weiß, dass dieser Beitrag wirklich alt ist, aber ich habe zu antworten, denn obwohl BalusC Antwort als korrekt markiert ist, dann ist es nicht ganz korrekt.

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

Gut, dass Sie zu diesem alten Beitrag geantwortet:

Sie haben die Abfrage hinzufügen „[]“ so foo zu schreiben! Es hat definitiv geholfen. –

+11

Diese Antwort ist nur für Benutzer von schwach typisierten Sprachen wie PHP korrekt, da das '[]' tatsächlich als interner Workaround verwendet wird, um mehrwertige Parameter zu erhalten. Meine Antwort wurde aktualisiert, um mehr zu verdeutlichen. Ihre Aussage "es ist nicht vollständig korrekt" ist also ungültig. Die ursprüngliche Frage war über Java, nicht über PHP. – BalusC

Verwandte Themen