ฉันจะส่ง Array ด้วยคำขอ HTTP Get ได้อย่างไร
ฉันใช้ไคลเอนต์ GWT เพื่อส่งคำขอ
คำตอบ:
ขึ้นอยู่กับสิ่งที่เซิร์ฟเวอร์เป้าหมายยอมรับ ไม่มีมาตรฐานที่ชัดเจนสำหรับเรื่องนี้ ดู ao Wikipedia: สตริงการสืบค้น :
แม้ว่าจะไม่มีมาตรฐานที่ชัดเจน แต่เว็บเฟรมเวิร์กส่วนใหญ่อนุญาตให้เชื่อมโยงค่าหลายค่ากับฟิลด์เดียว (เช่น
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 หรือ 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 Servlet คุณยังสามารถรับได้ แต่คุณต้องใช้ชื่อพารามิเตอร์ที่แน่นอนรวมทั้งวงเล็บปีกกา
String[] foo = request.getParameterValues("foo[]"); // [value1, value2, value3]
[]
ในชื่อพารามิเตอร์คำขอจะไม่ได้รับการตีความเช่นเดียวกับภาษาที่พิมพ์ไม่ชัดเจน เดิมถูกนำมาใช้เป็นการแก้ปัญหาภายในสำหรับภาษาที่พิมพ์ไม่ชัดเจนเพื่อให้สามารถสร้างประเภทตัวแปรที่ต้องการได้ PHP เป็นคนแรกที่ทำเช่นนั้น
ฉันรู้ว่าโพสต์นี้เก่ามาก แต่ฉันต้องตอบกลับเพราะแม้ว่าคำตอบของ 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 --- เป็นแอปพลิเคชันโฮสต์ที่ต้องจัดการการถอดรหัสกลับเข้าอาร์เรย์