Present 2 เรื่อง PHP กับ Ajax


AJAX (Asynchronous JavaScript and XML)

           เป็นเทคนิคในการพัฒนาเว็บแอปพลิเคชันเพื่อให้ความสามารถโต้ตอบกับผู้ใช้ได้ดีขึ้น โดยการรับส่งข้อมูลในฉากหลัง ทำให้ทั้งหน้าไม่ต้องโหลดใหม่ทุกครั้งที่มีการเปลี่ยนแปลง ซึ่งช่วยทำให้เพิ่มการตอบสนอง ความรวดเร็ว และการใช้งานโดยรวม

ภาพเปรียบเทียบการติดต่อสื่อสาร ระหว่างเว็บแอปพลิเคชันแบบดังเดิมกับแบบที่ใช้ เอแจ็กซ์

องค์ประกอบของ AJAX

JavaScript
                   AJAX ใช้ JavaScript ควบคุมการแสดงข้อมูล รวมทั้งโต้ตอบกับผู้ใช้ กล่าวได้ว่าการทำงานหลักๆ ที่เกี่ยวข้องกับการตอบสนองผู้ใช้จะเป็นหน้าที่ของ JavaScript ทั้งสิ้น

XML
                   AJAX ได้ดึงความสามารถของ XML มาเป็นสื่อกลางในการสื่อสารข้อมูลระหว่างเว็บบราวเซอร์กับเว็บเซิร์ฟเวอร์ทำให้แอปพลิเคชั่นทำงานได้มีประสิทธิภาพมากขึ้น และเร็วขึ้น

CSS
                   AJAX ได้นำความสามารถของ CSS มาใช้กำหนดโครงสร้างหรือลักษณะการแสดงผลของเว็บเพจ และส่งผลให้การแสดงผลที่มีลักษณะซ้ำๆ กันเป็นไปอย่างรวดเร็ว

DOM
                   AJAX ได้ดึงความสามารถของ DOM ทำให้สามารถจัดการกับเอการ XHTML (HTML) หรือ XML ได้อย่างมีประสิทธิภาพ อีกทั้งทำให้โค๊ดของเว็บแอปพลิเคชั่นที่ใช้ AJAX มีความเป็นระเบียบง่ายต่อการจัดการ

XMLHttpRequest Object
                   โปรโตคอล HTTP สร้างการเชื่อมต่อระหว่างบราวเซอร์กับเว็บเซิร์ฟเวอร์ XMLHttpRequest ถือได้ว่าเป็นส่วนสำคัญในการพัฒนาเว้บแอปพลิเคชั่นที่ใช้ AJAX

XSLT และ Xpath
                   AJAX ได้ใช้ XSLT ซึ่งตัวมันเองใช้ XPath เพื่อจะสร้างผลลัพธ์ที่ต้องการจากข้อมูล mark-up ที่เป็น XML

ข้อดีของ AJAX

v ขนาดการรับส่งข้อมูล - เทคนิคเอแจ็กซ์นั้นสามารถสร้าง HTML ได้ในเครื่องผู้ใช้ ทำให้ขนาดข้อมูลนั้นเล็กลงในครั้งต่อๆไป
v สามารถส่งเพียงข้อมูล และคำสั่งจาวาสคริปต์ลงมาเฉพาะส่วนที่มีการเปลี่ยนแปลง แทนที่จะต้องส่งข้อมูลใหม่หมดมาทั้งหน้า ซึ่งทั้งนี้ขึ้นอยู่กับการออกแบบของเว็บแอปพลิเคชันนั้นๆ
v มีความรวดเร็วในการตอบสนอง - เนื่องจากการใช้เทคนิค
v เอแจ็กซ์นั้นทำให้การเปลี่ยนแปลงต่างๆ เช่นการแก้ไข เพิ่มเติม ลบทิ้งรายการข้อมูล หรือการดึงข้อมูลที่ต้องการจะค้นหานั้น สามารถทำได้ในฉากหลัง ทำให้ผู้ใช้รู้สึกการตอบสนองนั้น คล้ายคลึงกับโปรแกรมคอมพิวเตอร์ มากกว่าเว็บปกติที่ต้องรอโหลดใหม่ทั้งหน้าสำหรับการเปลี่ยนแปลงต่างๆ

ข้อเสียของ AJAX

v มีปัญหาการใช้งานเกี่ยวกับปุ่ม "ย้อนกลับ" - เนื่องจากว่าเทคนิค เอแจ็กซ์นั้นทำงานในฉากหลัง และไม่ได้เรียกหน้าใหม่ ทำให้เวลาใช้ปุ่ม "ย้อนกลับ" (back) ในเว็บเบราว์เซอร์ อาจจะไม่ได้หน้าที่ควรจะเป็น ผู้พัฒนานั้นได้คิดค้นวิธีการแก้ไขปัญหานี้หลากหลายรูปแบบด้วยกัน
v มีปัญหาในการคั่นหน้า - เนื่องจากว่าข้อมูลสามารถเปลี่ยนแปลงโดยไม่ต้องโหลดหน้าใหม่นั้น ทำให้ยากต่อการที่จะคั่นหน้าในสถานะปัจจุบันที่ต้องการ
v เวลาที่ใช้ในการรับส่งข้อมูล - เนื่องจากว่าผู้ใช้อาจจะรู้สึกถึงความล่าช้าได้ ซึ่งในหลายกรณีผู้ใช้อาจจะไม่เข้าใจถึงสาเหตุ. ความล่าช้าในเทคนิค เอแจ็กซ์นั้นจะเห็นได้ชัดกว่าการโหลดหน้าใหม่ทั้งหน้า
v ปัญหาความเข้ากันได้กับเสิร์ชเอนจิน - ผู้พัฒนายังต้องคำนึงการออกแบบ ที่จะให้เสิร์ชเอนจินต่างๆนั้นสามารถอ่านและจัดทำดัชนีได้. ปัญหานี้ไม่ใช่ปัญหาที่เกิดขึ้นกับเว็บแอปพลิเคชันที่ใช้เทคนิค เอแจ็กซ์เท่านั้น แต่ยังเกิดขึ้นกับเว็บที่ดึงข้อมูลหน้าใหม่ทั้งหมดจากการตอบรับ เช่น กดปุ่ม เป็นต้น
v ความน่าเชื่อถือของจาวาสคริปต์ - เนื่องจากว่าเอแจ็กซ์ใช้จาวาสคริปต์ ซึ่งจาวาสคริปต์นั้นอาจทำงานแตกต่างกันขึ้นอยู่กับเว็บเบราว์เซอร์หรือรุ่นของเว็บเบราว์เซอร์นั้นๆ และหากต้องการให้เข้ากันได้ในหลายเว็บเบราว์เซอร์ อาจต้องการการทดสอบและตรวจสอบความเข้ากันได้บนเบราว์เซอร์ต่างๆ ซึ่งบางครั้งอาจจำเป็นที่จะต้องเขียนโค้ดแยกเช่นบางส่วนสำหรับไออี และอีกส่วนสำหรับไฟร์ฟอกซ์เป็นต้น

--------------------------------------

ตัวอย่างโค้ด : onClick

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Form & JavaScript</title>
<script language="javascript">
function readText(){
document.getElementById("div1").innerHTML = "สวัสดีคุณ:" + 
document.getElementById("txtName").value;
                                                }
</script>

</head>
<body>
<h1>Reading Text</h1>
<form>
ชื่อ <input type="text" id="txtName" /> &nbsp;
<input type="button" onclick="readText()"
    value="Enter" />
</form>
<div id="div1">
</div>

</body>
</html>

อธิบายโค้ด

    <input type="button" onclick="readText()" value="Enter" /> = เป็นการเรียกใช้ฟังก์ชัน readText เมื่อเกิด onClick ซึ่งเป็นอีเวนต์ที่เกิดขึ้นเมื่อผู้ใช้คลิกปุ่ม Enter ดังภาพ

    function readText(){ 
    และ
    document.getElementById("div1").innerHTML = "สวัสดีคุณ:" + 
document.getElementById("txtName").value;
                                                }
เป็นการเรียกใช้ฟังก์ชัน readText ซึ่งจะอ่านค่าที่ผู้ใช้กรอกลงกล่องข้อความด้วยพรอเพอร์ตี value และแสดงบนเว็บเพจด้วยการอัปเดตแท็ก <div> ผ่านพรอเพอร์ตี innerHTML



ภาพตัวอย่าง : แสดงการใช้งานอีเวนต์แฮนเดลอร์เพื่ออ่านค่าที่ผู้ใช้กรอกมาแสดงบนเว็บเพจ










By :
Free Blog Templates