พารามิเตอร์แรกของวิธีการเปิดของวัตถุ XMLHTTTPREQUEST คือประเภทการร้องขอและค่าสามารถรับหรือโพสต์ได้ บทความนี้แนะนำคำขอ GET
วัตถุประสงค์ของการร้องขอ Get นั้นส่วนใหญ่จะได้รับข้อมูล แม้ว่าการร้องขอจะผ่านข้อมูลสามารถผ่านข้อมูลได้ แต่วัตถุประสงค์ของการส่งข้อมูลคือการบอกเซิร์ฟเวอร์เนื้อหาที่ให้เรา
เมื่อใช้ Get Request พารามิเตอร์จะถูกส่งผ่านด้วย URL
เมื่อใช้คำขอรับพวกเขาจะถูกแคชได้อย่างง่ายดายดังนั้นคุณต้องให้ความสนใจกับปัญหาการแคช
เมื่อใช้ Get Request ฝั่งเซิร์ฟเวอร์ควรใช้ request.querystring [data] เพื่อรับข้อมูล
เราใช้คำขอ GET ในบทความ "Implete Ajax Instance" เราพบปัญหาต่อไปนี้ในเวลานั้น:
- วิธีสร้างวัตถุ XMLHTTTPREQUEST ที่สามารถทำงานในเบราว์เซอร์ส่วนใหญ่
- มีปัญหาการแคชเมื่อใช้ Get Request
- ปัญหาที่อ่านไม่ออกภาษาจีน
ในหมู่พวกเขาปัญหาแรกได้รับการแก้ไขในบทความ "xmlhttprequest object";
สำหรับปัญหาที่สองเหตุผลคือ:
คำขอ GET จะเข้าถึงแคชทุกครั้งเพื่อดูว่ามี URL ที่ตรงกันหรือไม่ หากมี URL ในแคชจะถูกส่งคืน หากไม่มีจะมีการร้องขอไปยังเซิร์ฟเวอร์
สารละลาย:
1. เพิ่มพารามิเตอร์การเปลี่ยนแปลงแบบไดนามิกลงใน URL เพื่อค้นหาว่าทุกครั้งที่คุณเข้าถึง URL ที่แตกต่างกันเพื่อให้มีการออกคำขอใหม่ไปยังเซิร์ฟเวอร์ทุกครั้ง
สำหรับคำถามที่สามก่อนอื่นมาดูเหตุผลของรหัสที่อ่านไม่ออก:
ข้อมูลที่ส่งคืนโดย XMLHTTP คือ UFT-8 โดยค่าเริ่มต้น หากหน้าไคลเอนต์คือ GB2312 หรือการเข้ารหัสอื่น ๆ รหัสที่อ่านไม่ออกจะเกิดขึ้น
สารละลาย:
1. หากไคลเอนต์คือ GB2312 จากนั้นเมื่อเอาต์พุตให้ระบุการเข้ารหัสสตรีมเอาต์พุต
2. ทั้งไคลเอนต์และเซิร์ฟเวอร์ใช้การเข้ารหัส UTF-8
3. ตรวจสอบให้แน่ใจว่าใช้วิธี encodeuricomponent เพื่อเข้ารหัสพารามิเตอร์
ให้ความสนใจกับตัวอย่าง:
ไฟล์หน้า HTML ไม่เปลี่ยนแปลง ความรู้เกี่ยวกับการเปลี่ยนแปลงรหัส JS มีดังนี้:
<script type = "text/javascript"> ฟังก์ชั่น btn_click () {// สร้าง xmlhttprequest วัตถุ var xmlhttp = window.xmlhttprequest (): ใหม่ activexobject ("microsoft.xmlhttp"); // รับค่า VAR username = document.getElementById ("txt_username"). ค่า; var ate = document.getElementById ("txt_age") ค่า; // กำหนดค่า xmlhttprequest Object // ใช้วิธีการเข้ารหัส Uricomponent เพื่อเข้ารหัสพารามิเตอร์ที่ได้รับ // เพิ่มพารามิเตอร์เพื่อเข้าถึง URL ที่แตกต่างกันในแต่ละครั้งเพื่อหลีกเลี่ยงปัญหาแคช XMLHTTP.Open ("Get", "get.aspx? username =" Math.random ()); // ตั้งค่าฟังก์ชั่นการโทรกลับ xmlhttp.onreadyStateChange = function () {ถ้า (xmlhttp.readyState == 4 && xmlhttp.status == 200) {document.getElementById ("ผลลัพธ์") }} // ส่งคำขอเนื่องจากพารามิเตอร์ทั้งหมดอยู่ใน URL ดังนั้น null จะถูกส่งที่นี่ xmlhttp.send (null); } </script>
ด้านเซิร์ฟเวอร์:
void page_load ที่ได้รับการป้องกัน (ผู้ส่งวัตถุ, EventArgs E) {response.clear (); String username = request.QueryString ["ชื่อผู้ใช้"]; string age = request.QueryString ["อายุ"]; Response.write ("ชื่อ: '" + ชื่อผู้ใช้ + "' <br/> อายุ:" + อายุ + "<br/> เวลา: '" + datetime.now.toString () + ""); Response.end ();}// แหล่งที่มาจาก http://www.vevb.com/oneword/archive/2011/06/04/2072585.html