HTML ist wirklich besser darin, dies zu beleuchten. <input name="user[name]" /> <input name="user[email]" />innerhalb eines <form>Containers weiß genau, wie standardmäßig in allen Browsern gesendet werden soll. Eingaben werden zu `user [name] = SOMETEXT & user [email] [email protected] --- es ist die Host-Anwendung, die erforderlich ist, um die Dekodierung zurück in ein Array
durchzuführen
Antworten:
153
Das hängt davon ab, was der Zielserver akzeptiert. Hierfür gibt es keinen endgültigen Standard. Siehe auch Wikipedia: Abfragezeichenfolge :
Obwohl es keinen endgültigen Standard gibt, erlauben die meisten Web-Frameworks, dass einem einzelnen Feld mehrere Werte zugeordnet werden (z field1=value1&field1=value2&field2=value3. B. ). [4] [5]
Wenn der Zielserver eine stark typisierte Programmiersprache wie Java ( Servlet ) verwendet, können Sie diese im Allgemeinen einfach als mehrere Parameter mit demselben Namen senden. Die API bietet normalerweise eine dedizierte Methode, um mehrere Parameterwerte als Array zu erhalten.
Wenn der Zielserver eine schwach typisierte Sprache wie PHP oder RoR verwendet, müssen Sie den Parameternamen mit geschweiften Klammern versehen [], damit die Sprache ein Array von Werten anstelle eines einzelnen Werts zurückgibt .
Beachten Sie, dass Sie beim Senden foo[]=value1&foo[]=value2&foo[]=value3an ein Java-Servlet diese weiterhin erhalten können, jedoch den genauen Parameternamen einschließlich der geschweiften Klammern verwenden müssen.
Wenn der Server nodeJs verwendet, können Sie das Array einfach als foo = [Wert1, Wert2, Wert3] übergeben. Wenn Sie diese Express-Route mit req.query erhalten, erhalten Sie {foo: '[Wert1, Wert2, Wert3]'}. Sie müssen es nur analysieren und dieses Array in Ihrem Code verwenden
Akshay Barpute
184
Ich weiß, dass dieser Beitrag wirklich alt ist, aber ich muss antworten, denn obwohl die Antwort von BalusC als richtig markiert ist, ist sie nicht ganz richtig.
Sie müssen die Abfrage schreiben und "[]" wie folgt hinzufügen:
Schön, dass du auf diesen alten Beitrag geantwortet hast! Es hat definitiv geholfen.
Tha Leang
@BalusC falsch, dies funktioniert einwandfrei in C / C ++ / C # (und kann in Java funktionieren). Nur Ihre Verwendung von Java führt dazu, dass identische Namen als solche interpretiert werden. Ihre Antwort ist jedoch eine falsche Verwendung der URI-Formatierung
<input name="user[name]" /> <input name="user[email]" />
innerhalb eines<form>
Containers weiß genau, wie standardmäßig in allen Browsern gesendet werden soll. Eingaben werden zu `user [name] = SOMETEXT & user [email] [email protected] --- es ist die Host-Anwendung, die erforderlich ist, um die Dekodierung zurück in ein ArrayAntworten:
Das hängt davon ab, was der Zielserver akzeptiert. Hierfür gibt es keinen endgültigen Standard. Siehe auch Wikipedia: Abfragezeichenfolge :
Wenn der Zielserver eine stark typisierte Programmiersprache wie Java ( Servlet ) verwendet, können Sie diese im Allgemeinen einfach als mehrere Parameter mit demselben Namen senden. Die API bietet normalerweise eine dedizierte Methode, um mehrere Parameterwerte als Array zu erhalten.
Das
request.getParameter("foo")
wird auch funktionieren, aber es wird nur der erste Wert zurückgegeben.Wenn der Zielserver eine schwach typisierte Sprache wie PHP oder RoR verwendet, müssen Sie den Parameternamen mit geschweiften Klammern versehen
[]
, damit die Sprache ein Array von Werten anstelle eines einzelnen Werts zurückgibt .Wenn Sie immer noch verwenden
foo=value1&foo=value2&foo=value3
, wird nur der erste Wert zurückgegeben.Beachten Sie, dass Sie beim Senden
foo[]=value1&foo[]=value2&foo[]=value3
an ein Java-Servlet diese weiterhin erhalten können, jedoch den genauen Parameternamen einschließlich der geschweiften Klammern verwenden müssen.quelle
Ich weiß, dass dieser Beitrag wirklich alt ist, aber ich muss antworten, denn obwohl die Antwort von BalusC als richtig markiert ist, ist sie nicht ganz richtig.
Sie müssen die Abfrage schreiben und "[]" wie folgt hinzufügen:
quelle