2010-06-17 13 views

回答

98

這取決於目標服務器接受的內容。對此沒有明確的標準。另見a.o. Wikipedia: Query string

雖然沒有明確的標準,最web框架允許多個值與單個場(例如field1=value1&field1=value2&field2=value3)相關聯。 [4][5]

一般地,當目標服務器使用強類型編程語言如Java(Servlet),那麼你可以把他們作爲多個參數使用相同的名稱。 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或回報率,那麼你需要的後綴,以便括號[]參數名稱觸發語言返回值的數組,而不是一個單一的價值。

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 Servlet中,那麼你仍然可以得到他們,但你需要使用精確的參數名稱包括括號。

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

我知道這個帖子是真的老了,但我要回復,因爲雖然BalusC的答案被標記爲正確的,它不是完全正確的。

你必須編寫查詢添加「[]」到foo這樣的:

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

很高興回答你這個老帖子!它絕對有幫助。 – 2014-08-27 07:41:23

+11

這個答案只適用於像PHP這樣的弱類型語言的用戶,因爲'[]'實際上被用作內部工作以便能夠獲得多值參數。我的答案已經更新,以澄清更多。所以你的陳述「不完全正確」是無效的。最初的問題是關於Java,而不是PHP。 – BalusC 2015-10-22 13:41:34