อ้างอิง: http://www.openjs.com/articles/ajax_xmlhttp_using_post.php
วิธีการโพสต์
เรากำลังจะทำการแก้ไขบางอย่างเพื่อจะใช้วิธี POST เมื่อส่งคำขอ ...
var url = "get_data.php";
var params = "lorem=ipsum&name=binny";
http.open("POST", url, true);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");
http.onreadystatechange = function() {
if(http.readyState == 4 && http.status == 200) {
alert(http.responseText);
}
}
http.send(params);
ต้องตั้งค่าส่วนหัว http บางรายการพร้อมกับคำขอ POST ดังนั้นเราจึงกำหนดไว้ในบรรทัดเหล่านี้ ...
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");
ด้วยบรรทัดข้างต้นเรากล่าวโดยทั่วไปว่าข้อมูลที่ส่งอยู่ในรูปแบบของการส่งแบบฟอร์ม นอกจากนี้เรายังระบุความยาวของพารามิเตอร์ที่เรากำลังส่ง
http.onreadystatechange = function() {
if(http.readyState == 4 && http.status == 200) {
alert(http.responseText);
}
}
เราตั้งค่าตัวจัดการสำหรับเหตุการณ์การเปลี่ยนแปลง "สถานะพร้อม" นี่คือตัวจัดการเดียวกับที่เราใช้สำหรับเมธอด GET คุณสามารถใช้ http.responseText ได้ที่นี่ - แทรกลงใน div โดยใช้ innerHTML (AHAH), eval it (JSON) หรืออย่างอื่น
http.send(params);
สุดท้ายเราส่งพารามิเตอร์พร้อมคำขอ url ที่ระบุจะถูกโหลดหลังจากเรียกบรรทัดนี้เท่านั้น ในเมธอด GET พารามิเตอร์จะเป็นค่า null แต่ในวิธี POST ข้อมูลที่จะส่งจะถูกส่งเป็นอาร์กิวเมนต์ของฟังก์ชันส่ง ตัวแปร params ถูกประกาศในบรรทัดที่สองเป็นlorem=ipsum&name=binny
- ดังนั้นเราจึงส่งพารามิเตอร์สองตัว - 'lorem' และ 'name' ด้วยค่า 'ipsum' และ 'binny' ตามลำดับ