回答:
これは、ターゲットサーバーが受け入れる内容によって異なります。これには明確な基準はありません。ao ウィキペディアもご覧ください:クエリ文字列:
明確な標準はありませんが、ほとんどのWebフレームワークでは、単一のフィールドに複数の値を関連付けることができます(など
field1=value1&field1=value2&field2=value3
)。[4] [5]
一般に、ターゲットサーバーがJava(サーブレット)などの厳密に型指定されたプログラミング言語を使用している場合は、同じ名前の複数のパラメーターとして送信できます。APIは通常、複数のパラメーター値を配列として取得するための専用メソッドを提供します。
foo=value1&foo=value2&foo=value3
String[] foo = request.getParameterValues("foo"); // [value1, value2, value3]
の request.getParameter("foo")
また、その上で動作しますが、それは最初の値のみを返します。
String foo = request.getParameter("foo"); // value1
また、ターゲットサーバーがPHPやRoRなどの弱い型付き言語を使用している場合[]
、言語をトリガーして単一の値ではなく値の配列を返すには、パラメーター名に中括弧を付ける必要があります。
foo[]=value1&foo[]=value2&foo[]=value3
$foo = $_GET["foo"]; // [value1, value2, value3]
echo is_array($foo); // true
それでもを使用している場合はfoo=value1&foo=value2&foo=value3
、最初の値のみが返されます。
$foo = $_GET["foo"]; // value1
echo is_array($foo); // false
foo[]=value1&foo[]=value2&foo[]=value3
Javaサーブレットに送信する場合でも取得できますが、中括弧を含む正確なパラメーター名を使用する必要があることに注意してください。
String[] foo = request.getParameterValues("foo[]"); // [value1, value2, value3]
私はこの投稿が本当に古いことを知っていますが、BalusCの答えは正しいとマークされていますが、完全に正しいわけではないため、返信する必要があります。
次のように、 "[]"をfooに追加するクエリを記述する必要があります。
foo[]=val1&foo[]=val2&foo[]=val3
<input name="user[name]" /> <input name="user[email]" />
内は、<form>
すべてのブラウザでデフォルトで送信する方法を正確に知っています。入力は `user [name] = SOMETEXT&user [email] =SOME@TEXT.comになります---配列へのデコードを処理するために必要なのはホストアプリケーションです