รบกวนเรื่อง การกรอกฟอร์ขณะพิมพ์ ด้วย Ajax อีกทีครับ
ผมได้ถามเกี่ยวกับ การกรอกฟอร์ขณะพิมพ์ ด้วย Ajaxไปหลายรอบ อาจารย์ก็แนะนำให้อย่างดี แต่มันก็ติดปัญหาทุกที ดูแล้วดูอีกก็ยังไม่เข้าใจการทำงานของมันจริงๆครับเลยมาถามต่อ
ผมได้ทำตามคำเเนะนำแล้วลอง ทดสอบการกรอกฟอร์ขณะพิมพ์ ด้วย Ajax(1) แล้วก็ได้ครับ แต่มันกลับกรอกได้เพียงอันเดียว ถ้ากรอกอันที่1 ข้อมูลก็ออกของอันที่ 1 ถ้ากรอกอันที่ 2 มันจะรีเฟรช ข้อมูลในช่องอันที่1 ก็หายไป
และได้ทำ เงื่อนไข if else ก็ error ครับ
ผมเอาการกรอกฟอร์ขณะพิมพ์ ด้วย Ajax(2) มาก็เช่นเดิมครับข้อมูลไม่มาเลย ครับ
<?php
// สำหรับตรวจสอบในขณะกรอกข้อมูล
header("content-type: text/html; charset=UTF-8");
// กำหนดข้อมูล (ตัวอย่าง)
$users = array('demo', 'demon');
$names = array('ratree', 'nammeet');
$emails = array('demo@rrt.com', 'demo@yahoo.com');
if ((isset( $_POST['user'])) AND (isset($_POST['name']))){
// ส่ง user มา ค้นหา
$user = trim($_POST['user']);
$name = trim($_POST['user']);
// ค้นหาข้อมูล
$i = 0;
while ($i < count($users)) {
// ค้นหาบางส่วนของคำ
if (strpos($users[$i], $user) !== FALSE) {
break;
}
$i++;
}
// กำหนดค่าที่คืน
// ใช้คีย์ เป็นค่าของพื้นที่ที่ต้องการแสดงผล
$ret[] = 'resultUser":"'.$users[$i];
}
// คืนค่าเป็น JSON
echo '[{"'.implode('","', $ret).'"}]';
?>
หลักการของการทำงานก็ให้คิด concept แบบตรงไปตรงมาสิ คิด concept ให้ออกก่อนแล้วเอา concept ไปแปลงเป็นโค้ด
1.ถ้าเธอสามารถทำตามตัวอย่างที่ 1 ได้ ให้เข้าใจว่า ตัวอย่างที่ 1 เป็นการกรอกจากค่าเพียงค่าเดียว แต่ รับค่ากลับหลายค่า เอามาแสดงผลที่ต่างๆกัน
2.ตัวอย่างที่ 2 เป็นการส่งค่าไปค้นหา มากกว่า 1 ค่า โดยเงื่อนไขมีว่าเราจะส่งค่า ทั้งหมด ไปค้นหายังไฟล์เดียว
ในกรณีที่ 2 เราสามารถออกแบบโดยยึดหลักกรณีที่ 1 ได้ คือ แยกโค้ดออกเป็น 2 ชุด input แต่ละตัว ทำตามโค้ดแบบที่ 1 คนละชุดกัน ก็สามารถทำได้ แต่มันไม่จำเป็น ผมเลย รวมเอาทั้ง 2 อย่างเข้าไว้เป็นไฟลืเดียวกัน ตามตัวอย่างที่ 2 เพื่อให้เราสามารถค้นหาข้อมูลจาก input หลายๆ อย่างบนไฟล์เดียวกันได้ และแน่นอน สามารถมีผลลัพท์ตอบกับมากกว่า 1 อย่างได้(เหมือนตัวอย่างที่ 1) ในการใช้ if ตามตัวอย่าง เป็นการใช้เพื่อแยกว่าการค้นหา เกิดจากการส่งค่าจาก input ตัวไหนมา ถ้าเธอเข้าใจการทำงานของมัน ถึงจะประยุกต์ต่อได้นะ
ลองไปพิจารณาตัวอย่างใหม่อีกครั้ง