Làm cách nào để gửi một Mảng với yêu cầu HTTP Get?
Tôi đang sử dụng ứng dụng khách GWT để gửi yêu cầu.
Câu trả lời:
Điều đó phụ thuộc vào những gì máy chủ mục tiêu chấp nhận. Không có tiêu chuẩn cuối cùng cho điều này. Xem thêm ao Wikipedia: Chuỗi truy vấn :
Mặc dù không có tiêu chuẩn cuối cùng, hầu hết các khuôn khổ web đều cho phép nhiều giá trị được liên kết với một trường duy nhất (ví dụ
field1=value1&field1=value2&field2=value3
). [4] [5]
Nói chung, khi máy chủ đích sử dụng ngôn ngữ lập trình được đánh máy mạnh như Java ( Servlet ), thì bạn có thể gửi chúng dưới dạng nhiều tham số có cùng tên. API thường cung cấp một phương thức chuyên dụng để lấy nhiều giá trị tham số dưới dạng một mảng.
foo=value1&foo=value2&foo=value3
String[] foo = request.getParameterValues("foo"); // [value1, value2, value3]
Nó request.getParameter("foo")
cũng sẽ hoạt động trên nó, nhưng nó sẽ chỉ trả về giá trị đầu tiên.
String foo = request.getParameter("foo"); // value1
Và, khi máy chủ đích sử dụng ngôn ngữ được định kiểu yếu như PHP hoặc RoR, thì bạn cần đặt tên tham số bằng dấu ngoặc nhọn []
để kích hoạt ngôn ngữ trả về một mảng giá trị thay vì một giá trị duy nhất.
foo[]=value1&foo[]=value2&foo[]=value3
$foo = $_GET["foo"]; // [value1, value2, value3]
echo is_array($foo); // true
Trong trường hợp bạn vẫn sử dụng foo=value1&foo=value2&foo=value3
, thì nó sẽ chỉ trả về giá trị đầu tiên.
$foo = $_GET["foo"]; // value1
echo is_array($foo); // false
Xin lưu ý rằng khi bạn gửi foo[]=value1&foo[]=value2&foo[]=value3
tới Java Servlet, bạn vẫn có thể lấy chúng, nhưng bạn cần sử dụng tên tham số chính xác bao gồm cả dấu ngoặc nhọn.
String[] foo = request.getParameterValues("foo[]"); // [value1, value2, value3]
Tôi biết bài viết này thực sự cũ, nhưng tôi phải trả lời vì mặc dù câu trả lời của BalusC được đánh dấu là đúng, nó không hoàn toàn chính xác.
Bạn phải viết truy vấn thêm "[]" vào foo như sau:
foo[]=val1&foo[]=val2&foo[]=val3
<input name="user[name]" /> <input name="user[email]" />
bên trong vùng<form>
chứa biết chính xác cách gửi theo mặc định trong tất cả các trình duyệt. đầu vào sẽ trở thành `user [name] = SOMETEXT & user [email] =SOME@TEXT.com --- nó là ứng dụng máy chủ cần để xử lý giải mã trở lại một mảng