Just another WordPress weblog
16 Aug
บทความนี้แปลมาจาก http://www.w3schools.com/Ajax/ajax_browsers.asp
หลักสำคัญของ ajax คือตัว XMLHttpRequest นั่นเอง
แต่ละโปรแกรมเว็บบราวเซอร์นั้น มีการสร้าง XMLHttpRequest ด้วยวิธีที่แตกต่างกัน ใช้ตัวสร้างที่เรียกว่า methods ต่างกัน
เช่น ใน IE นั้นใช้ ActiveXObject ในการสร้าง แต่สำหรับโปรแกรมบราวเซอร์ยี่ห้ออื่นแล้ว ใช้จาวาสคริปส์ ชื่อว่า XMLHttpRequest นะครับ ดังนั้นก่อนที่เราจะสร้างตัว XMLHttpRequest สำหรับแต่ละโปรแกรมบราวเซอร์แล้ว เราต้องทราบก่อนใช่ไหมหล่ะครับ ว่าขณะนั้นผู้ใช้ ใช้โปรแกรมบราวเซอร์อะไรอยู่.
การตรวจสอบบราวเซอร์ว่าเป็นยี่ห้ออะไรอย่างง่ายเลยก็ใช้ javascript ง่ายๆ โดยวิธี try and catch statement นะครับ
เราจะปรับปรุงไฟล์ testAjax.htm ใหม่ให้เป็นดังข้างล่างนี้นะครับ เพื่อสร้างตัว XMLHttpRequest
——————————–
<html> <body>
<script type="text/javascript">
function ajaxFunction()
{
var xmlHttp;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
alert("Your browser does not support AJAX!");
return false;
}
}
}
}
</script>
<form name="myForm"> Name: <input type="text" name="username" /> Time: <input type="text" name="time" /> </form>
</body> </html>
——————————–
อธิบายได้ว่า
ในตอนแรกเราประกาศตัวแปร xmlHttp เพื่อเก็บค่าของ XMLHttpRequest object นะครับ
จากนั้นก็สร้าง XMLHttpRequest ด้วย คำสั่ง XMLHttp=new XMLHttpRequest() นะครับ โดยจะได้ผมเมื่อเป็นบราวเซอร์ Firefox, Opera, Safari นะครับ ถ้าเกิดไม่ใช่แล้ว (เป็นเท็จ) ก็จะไปสร้าง XMLHttpRequest ด้วยคำสั่ง xmlHttp=new ActiveXObject(”Msxml2.XMLHTTP”) ซึ่งเป็นของ IE6+ นะครับ แต่ถ้ายังไม่ได้อีกก็จะไปสร้างจาก xmlHttp=new ActiveXObject(”Microsoft.XMLHTTP”) ซึ่งเป็นของ IE5.5 นะครับ สาเหตุที่มีแค่นี้เพราะ บราวเซอร์เหล่านี้ล้วนมีผู้คนนิยมใช้มากที่สุกในโลก. ถ้าไม่สามารถสำเร็จก็แสดงว่า บราวเซอร์ที่ใช้ไม่ใช้บราวเซอร์ที่มีมาตรฐานครับ ดังนั้นจะไม่สามารถใช้งาน ajax ได้นะครับ ( อาจจะได้ก็ได้นะ )
ในบทต่อไปเราจะพูดถึงการสื่อสารระหว่างตัว XMLHttpRequest กับเซิฟเวอร์นะครับ
ถ้าแปลไม่แหล่มขออภัยด้วยครับ