Asynchronous JavaScript and XML

Home

AJAX Tutorial
Knowledge Developer Database Internet Resource
AJAX Tutorial
1. แนะนำ AJAX
2. ตัวอย่าง AJAX
3. การสร้าง XMLHttpRequest Object
4. การส่งคำขอไปแม่ข่าย
5. การตอบสนองจากแม่ข่าย
6. onreadystatechange Event
7. AJAX PHP/ASP
8. AJAX Database
9. AJAX XML
 
Internet
PHP
SSI
HTML
AJAX
 

การส่งคำขอไปแม่ข่าย

อ๊อบเจค XMLHttpRequest ใช้ส่งแลกเปลี่ยนข้อมูลกับแม่ข่าย

ส่งคำขอไปแม่ข่าย

การส่งคำขอไปแม่ข่าย ใช้เมธอด open() และ send() ของอ๊อบเจค XMLHttpRequest

xmlhttp.open("GET","ajax_info.txt",true);
xmlhttp.send();

เมธอด

คำอธิบาย

open(method,url,async)

ระบุประภทคำขอ, URL และคำขอควรได้รับจัดการแบบ asynchronously หรือไม่

method: ปรเภทขอคำ: GET หรือ POST
url: ตำแหน่งของไฟล์บนแม่ข่าย
async: true (asynchronous) หรือ false (synchronous)

send(string)

ส่งคำขอออกไปแม่ข่าย

string: ใช้เฉพาะคำขอ POST เท่านั้น

GET หรือ POST?

GET ง่ายกว่าและเร็วกว่า POST และสามารถใช้ได้ในกรณีส่วนใหญ่

อย่างไรก็ตาม ใช้ POST เสมอเมื่อ

- ไฟล์แคช (cached file) ไม่ใช้ตัวเลือก
- ส่งข้อมูลจำนวนมากไปยังแม่ข่าย (POST ไม่จำกัดขนาดข้อมูล)
- ส่งการนำเข้าของผู้ใช้ (ซึ่งอาจจะมีตัวอักษรไม่ทราบค่า) POST มีความแข็งแกร่งและปลอดภัยกว่า GET

GET Requests

คำขอ GET อย่างง่าย

ตัวอย่าง
xmlhttp.open("GET","demo_get.asp",true);
xmlhttp.send();

ตัวอย่างข้างบน จะได้รับผลลัพธ์เป็นแคช ในการหลีกเลี่ยงเรื่องนี้ให้เพิ่ม ID (เอกลักษณ์) ไปที่ URL

ตัวอย่าง
xmlhttp.open("GET","demo_get.asp?t=" + Math.random(),true);
xmlhttp.send();

ถ้าต้องการส่งสารสนเทศด้วยเมธอด GET ให้เพิ่มสารสนเทศไปที่ URL

ตัวอย่าง
xmlhttp.open("GET","demo_get2.asp?fname=Henry&lname=Ford",true);
xmlhttp.send();

POST Requests

คำขอ POST อย่างง่าย

ตัวอย่าง
xmlhttp.open("POST","demo_post.asp",true);
xmlhttp.send();

ข้อมูลของ POST เหมือนกับฟอร์ม HTML โดยเพิ่มที่ส่วนหัว HTML ด้วย setRequestHeader() ระบุข้อมูลที่ต้องการส่งด้วยเมธอด send()

ตัวอย่าง

xmlhttp.open("POST","ajax_test.asp",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("fname=Henry&lname=Ford");

เมธอด

คำอธิบาย

setRequestHeader(header,value)

เพิ่มส่วนหัว HTTP ไปที่คำขอ

header: ระบุชื่อส่วนหัว
value: ระบุค่าส่วนหัว

url – ไฟล์บนแม่ข่าย

พารามิเตอร์ url ของเมธอด open() คือ ที่อยู่ของไฟล์บนเครื่องแม่ข่าย

xmlhttp.open("GET","ajax_test.asp",true);

ไฟล์นี้สามารถเป็นไฟล์ชนิดใดๆ เช่น .txt หรือ .xml หรือไฟล์สคริปต์ด้านแม่ข่าย เช่น .asp หรือ .php ซึ่งสามารถทำการกระทำบนแม่ข่ายก่อนส่งการตอบสนองกลับมา

Asynchronous - True or False?

AJAX ย่อมาจาก Asynchronous JavaScript and XML สำหรับการทำให้อ๊อบเจค XMLHttpRequest ปฏิบัติตาม AJAX ให้กำหนดค่า พารามิเตอร์ async ของเมธอด open() ต้องมีการตั้งค่าเป็น true

xmlhttp.open("GET","ajax_test.asp",true);

คำขอ asynchronous ที่ส่งเป็นการปรับปรุงใหญ่สำหรับนักพัฒนาเว็บ งานจำนวนมากที่ทำบนแม่ข่ายใช้เวลามาก ก่อนหน้า AJAX ปฏิบัติการนี้อาจจะเป็นสาเหตุให้การประยุกต์ถูกแขวนหรือหยุด

ด้วย AJAX คำสั่ง JavaScript ไม่ต้องรอการตอบสนองจากแม่ข่าย แต่ทำสิ่งนี้แทน

• ประมวลผลสคริปต์อื่น ขณะที่คอยแม่ข่ายตอบสนอง
• ทำงานกับการตอบสนองต่อ เมื่อการตอบสนองพร้อม

Async=true

เมื่อใช้ async=true เป็นการระบุฟังก์ชันให้ประมวลผลเมื่อการตอบสนองพร้อมใน onreadystatechange event:

ตัวอย่าง

xmlhttp.onreadystatechange=function()
{

if (xmlhttp.readyState==4 && xmlhttp.status==200)
{

document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

}

}

xmlhttp.open("GET","ajax_info.txt",true);
xmlhttp.send();

เรียนรู้เกี่ยวกับ onreadystatechange เพิ่มในบทต่อไป

Async=false

การใช้ async = false ให้เปลี่ยนพารามิเตอร์ที่สามในเมธอด open() เป็น false

xmlhttp.open("GET","ajax_info.txt",false);

ไม่แนะนำให้ใช้ async=false แต่ถ้าเป็นคำขอขนาดเล็กสามารถทำได้

ให้จำไว้ว่า JavaScript จะไม่หยุดประมวลผล จนกว่าตอบสนองจากแม่ข่ายพร้อม ถ้าแม่ข่ายไม่ว่างหรือช้า โปรแกรมประยุกจะถูกแขวนหรือหยุด

หมายเหตุ เมื่อใช้ async=false ห้ามเขียนฟังก์ชัน onreadystatechange แต่ให้วางคำสั่งหลังประโยคคำสั่ง send()

ตัวอย่าง

xmlhttp.open("GET","ajax_info.txt",false);
xmlhttp.send();
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;


  
[an error occurred while processing this directive]