การสอน PHP Ajax พร้อมตัวอย่าง
⚡ สรุปอย่างชาญฉลาด
Ajax ใน PHP ช่วยให้เว็บเพจสามารถแลกเปลี่ยนข้อมูลจำนวนเล็กน้อยกับเซิร์ฟเวอร์และอัปเดตส่วนใดส่วนหนึ่งของหน้าเว็บได้โดยไม่ต้องโหลดหน้าเว็บใหม่ทั้งหมด บทแนะนำนี้จะสร้างการค้นหาเฟรมเวิร์กแบบสดๆ โดยอธิบายวิธีการแบบคลาสสิกอย่าง XMLHttpRequest และทางเลือกที่ทันสมัยอย่าง Fetch API

อาแจ็กซ์คืออะไร?
AJAX ย่อมาจาก Asynchronous Javaต้นฉบับ และ XML เป็นเทคโนโลยีที่ลดการโต้ตอบระหว่างเซิร์ฟเวอร์และไคลเอ็นต์ โดยจะอัปเดตเพียงบางส่วนของหน้าเว็บแทนที่จะอัปเดตทั้งหน้า การโต้ตอบแบบอะซิงโครนัสจะเริ่มต้นโดย Javaสคริปต์ จุดประสงค์ของ AJAX คือการแลกเปลี่ยนข้อมูลจำนวนเล็กน้อยกับเซิร์ฟเวอร์โดยไม่ต้องรีเฟรชหน้าเว็บ
Javaต้นฉบับ เป็นภาษาสคริปต์ฝั่งไคลเอ็นต์ โดยจะถูกประมวลผลบนฝั่งไคลเอ็นต์โดยเว็บเบราว์เซอร์ที่รองรับ Javaต้นฉบับ Javaโค้ดสคริปต์จะทำงานได้เฉพาะในเบราว์เซอร์ที่มี Javaเปิดใช้งานสคริปต์แล้ว
XML XML เป็นคำย่อของ Extensible Markup Language (ภาษามาร์กอัปที่ขยายได้) ใช้สำหรับเข้ารหัสข้อความในรูปแบบที่ทั้งมนุษย์และเครื่องอ่านได้ คล้ายกับ HTML แต่ช่วยให้คุณสร้างแท็กแบบกำหนดเองได้ สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับ XML โปรดดูบทความเกี่ยวกับ XML XML.
ทำไมต้องใช้ AJAX?
- ช่วยให้สามารถพัฒนาได้ping แอปพลิเคชันบนเว็บที่มีฟังก์ชันการทำงานครบครันและโต้ตอบได้เหมือนกับแอปพลิเคชันบนเดสก์ท็อป
- การตรวจสอบความถูกต้องสามารถทำได้ในขณะที่ผู้ใช้กรอกแบบฟอร์มโดยไม่ต้องส่งแบบฟอร์ม ซึ่งสามารถทำได้โดยใช้ฟังก์ชันเติมคำอัตโนมัติ คำที่ผู้ใช้พิมพ์จะถูกส่งไปยังเซิร์ฟเวอร์เพื่อประมวลผล และเซิร์ฟเวอร์จะตอบกลับด้วยคำหลักที่ตรงกับสิ่งที่ผู้ใช้ป้อน
- สามารถใช้เพื่อเติมข้อมูลลงในกล่องดรอปดาวน์โดยขึ้นอยู่กับค่าของกล่องดรอปดาวน์อื่นได้
- สามารถดึงข้อมูลจากเซิร์ฟเวอร์และอัปเดตเฉพาะบางส่วนของหน้าเว็บโดยไม่ต้องโหลดหน้าเว็บทั้งหมด ซึ่งมีประโยชน์มากสำหรับส่วนต่างๆ ของหน้าเว็บที่โหลดสิ่งต่างๆ เช่น:
- Tweets
- ความคิดเห็น
- ผู้ใช้งานที่เข้าชมเว็บไซต์ และข้อมูลแบบเรียลไทม์อื่นๆ ที่คล้ายกัน
วิธีการสร้างแอปพลิเคชัน PHP Ajax
เราจะสร้างแอปพลิเคชันง่ายๆ ที่ให้ผู้ใช้สามารถค้นหาเฟรมเวิร์ก PHP MVC ยอดนิยมได้
แอปพลิเคชันของเราจะมีช่องข้อความให้ผู้ใช้พิมพ์ชื่อของเฟรมเวิร์กต่างๆ ลงไป
จากนั้นเราจะใช้ AJAX เพื่อค้นหาผลลัพธ์ที่ตรงกัน แล้วแสดงชื่อเต็มของเฟรมเวิร์กไว้ด้านล่างแบบฟอร์มค้นหา
ขั้นตอนที่ 1) การสร้างหน้าดัชนี
index.php
<html> <head> <title>PHP MVC Frameworks - Search Engine</title> <script type="text/javascript" src="auto_complete.js"></script> </head> <body> <h2>PHP MVC Frameworks - Search Engine</h2> <p><b>Type the first letter of the PHP MVC Framework</b></p> <form method="POST" action="index.php"> <p><input type="text" size="40" id="txtHint" onkeyup="showName(this.value)"></p> </form> <p>Matches: <span id="txtName"></span></p> </body> </html>
ที่นี่
- “onkeyup=”showName(this.value)”” ดำเนินการ Javaฟังก์ชันสคริปต์จะแสดงชื่อทุกครั้งที่มีการพิมพ์คีย์ลงในช่องข้อความ คุณสมบัตินี้เรียกว่าการเติมข้อความอัตโนมัติ (auto complete)
ขั้นตอนที่ 2) การสร้างหน้ากรอบงาน
กรอบงาน.php
<?php $frameworks = array("CodeIgniter","Zend Framework","Cake PHP","Kohana") ; $name = $_GET["name"]; if (strlen($name) > 0) { $match = ""; for ($i = 0; $i < count($frameworks); $i++) { if (strtolower($name) == strtolower(substr($frameworks[$i], 0, strlen($name)))) { if ($match == "") { $match = $frameworks[$i]; } else { $match = $match . " , " . $frameworks[$i]; } } } } echo ($match == "") ? 'no match found' : $match; ?>
ขั้นตอนที่ 3) การสร้างสคริปต์ JS
auto_complete.js
function showName(str){ if (str.length == 0){ // exit function if nothing has been typed in the textbox document.getElementById("txtName").innerHTML=""; // clear previous results return; } if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200){ document.getElementById("txtName").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","frameworks.php?name="+str,true); xmlhttp.send(); }
ที่นี่
- คำสั่ง “if (str.length == 0)” จะตรวจสอบความยาวของสตริง หากความยาวเป็น 0 สคริปต์ส่วนที่เหลือจะไม่ถูกเรียกใช้งาน
- “if (window.XMLHttpRequest)…” Internet Explorer เวอร์ชัน 5 และ 6 ใช้ ActiveXObject สำหรับการใช้งาน AJAX ส่วนเวอร์ชันและเบราว์เซอร์อื่นๆ เช่น Chrome และ Firefox ใช้ XMLHttpRequest โค้ดนี้จะช่วยให้แอปพลิเคชันของเราทำงานได้ทั้งใน IE 5 และ 6 รวมถึงเบราว์เซอร์รุ่นใหม่ๆ ด้วย
- “xmlhttp.onreadystatechange=function…” ตรวจสอบว่าการโต้ตอบ AJAX เสร็จสมบูรณ์และสถานะเป็น 200 หรือไม่ จากนั้นจึงอัปเดตสแปน txtName ด้วยผลลัพธ์ที่ส่งกลับมา
ขั้นตอนที่ 4) ทดสอบแอปพลิเคชัน PHP Ajax ของเรา
สมมติว่าคุณได้บันทึกไฟล์ index.php ไว้ใน phptuts/ajax แล้ว ให้เข้าไปที่โฟลเดอร์นั้น URL http://localhost/phptuts/ajax/index.php
พิมพ์ตัวอักษร C ลงในช่องข้อความ คุณจะได้รับผลลัพธ์ดังต่อไปนี้
ตัวอย่างข้างต้นแสดงให้เห็นถึงแนวคิดของ AJAX และวิธีที่มันสามารถช่วยเราสร้างแอปพลิเคชันที่มีฟังก์ชันการทำงานครบครันและโต้ตอบได้
AJAX สมัยใหม่ด้วย Fetch API
อ็อบเจ็กต์ XMLHttpRequest ด้านบนยังคงใช้งานได้ แต่ส่วน ActiveXObject สำหรับ Internet Explorer รุ่นเก่าไม่จำเป็นอีกต่อไปแล้ว เบราว์เซอร์สมัยใหม่มี Fetch API ที่ใช้ Promise ซึ่งทำการร้องขอแบบเดียวกันโดยใช้โค้ดน้อยกว่ามาก
function showName(str) { if (str.length === 0) { document.getElementById("txtName").innerHTML = ""; return; } fetch("frameworks.php?name=" + encodeURIComponent(str)) .then(response => response.text()) .then(text => { document.getElementById("txtName").innerHTML = text; }); }
เวอร์ชันนี้ทำงานเหมือนกัน คือส่งข้อความที่พิมพ์ไปยัง frameworks.php และใส่ผลลัพธ์ลงใน span ชื่อ txtName นอกจากนี้ยังใช้ encodeURIComponent เพื่อหลีกเลี่ยงการเข้ารหัสข้อมูลที่ป้อนเข้ามาอย่างปลอดภัย และสามารถเพิ่มการจัดการข้อผิดพลาดได้ง่ายๆ โดยใช้บล็อก catch ในห่วงโซ่ Promise ของมัน


