ตัวอย่างนี้ผมใช้ [search]GAJAX[/search] ในการค้นหา ซึ่งความต้องการตามตัวอย่างก็คือ พิมพ์ Username ในช่อง แล้วส่งไปทำการค้นหา(จากฐานข้อมูล) ด้วย Ajax หากพบข้อมูลที่ตรงกัน ให้นำข้อมูลอื่นๆ ของ user ที่พบเช่น ชื่อเรียก อีเมล์ (หรืออื่นๆ) กลับไปเติมที่ช่องข้อมูลอื่นๆด้วย
โค้ดด้านล่างเป็นส่วนของฟอร์ม และ Javascript ที่ใช้สำหรับการตรวจสอบ ดูคำอธิบายต่างๆได้ที่ในโค้ดเลยครับ อย่าลืม include [search]gajax[/search] เข้าไปในเพจด้วยนะครับ
<form>
<p>Username : <input type="text" id="user" name="user" /><span id="result"> </span></p>
<p>ลองพิมพ์คำว่า demon ลงในช่อง Username (ทีละตัว)</p>
<p>Email : <input type="text" id="email" name="email" /></p>
<p>Display Name : <input type="text" id="displayname" name="displayname" /></p>
</form>
<script type="text/javascript">
var doKeyUp = function(event){
// input เจ้าของ event (user)
var input = GEvent.element(event);
// พื้นที่แสดงผลรูปรอโหลด
var result = $E('result');
// แสดงรูปรอโหลด เพื่อบอกว่ากำลังส่งข้อมูลไปตรวจสอบ
result.innerHTML = '<img src="https://www.goragod.com/skin/img/wait.gif" alt="" />';
// ajax ส่งข้อมูลไปตรวจสอบ
var req = new GAjax();
req.send('find.php' , 'user=' + encodeURIComponent(input.value) , function(xhr) {
result.innerHTML = ' ';
var datas = xhr.responseText.toJSON();
var prop, val;
// วนลูปส่งข้อมูลมาแสดงตาม input ต่างๆ
for (prop in datas[0]) {
val = datas[0][prop];
$E(prop).value = val;
};
});
}
// กำหนด event
$G('user').addEvent('keyup', doKeyUp);
</script>PHP ไฟล์ find.php ตามตัวอย่างนี้ เป็นการจำลองการค้นหาข้อมูลจาก Array เท่านั้นนะครับ คุณอาจใช้การค้นหาข้อมูลด้วย วิธีอื่นก็ได้ตามข้อกำหนดบนเว็บไซต์ของคุณ จุดสำคัญของวิธีการนี้ก็คือการส่งข้อมูลที่พบตอบกลับในรูปของ JSON เท่านั้นครับ หากไม่พบค่าที่ต้องการ ก็ให้ตอบกลับเป็นค่าว่างกลับไป
<?php
// สำหรับตรวจสอบในขณะกรอกข้อมูล
header("content-type: text/html; charset=UTF-8");
// กำหนดข้อมูล (ตัวอย่าง)
$users = array('demo', 'demon');
$emails = array('demo@goragod.com', 'demon@yahoo.com');
$displaynames = array('ตัวอย่าง', 'Demon !');
// ค่าที่ส่งมา
$user = trim($_POST['user']);
// ค้นหาข้อมูล
$i = 0;
while($i < count($users)){
if($users[$i] == $user){
break;
}
$i++;
}
// กำหนดค่าที่คืน
$ret[] = 'email":"'.$emails[$i];
$ret[] = 'displayname":"'.$displaynames[$i];
// คืนค่าเป็น JSON
echo '[{"'.implode('","', $ret).'"}]';
?>ตัวอย่าง สามารถ View Source เพื่อดูโค้ดในส่วนของฟอร์มได้นะครับ