A-AA+then

ช่วยด้วยครับขอคำแนะนำเรื่องการ reload ไฟล์ใน ajax ครับ

1,200
รบกวนสอบขอคำแนะนำหน่อยครับ พอดีผมลองเขียนฟอร์มสมัครสมาชิก+รูป โดยใช้ ajax ครับ ตอนนี้สามารถสมัครได้แล้ว  แต่ตอนบันทึกข้อมูลเรียบร้อยแล้วผมอยากให้แสดงฟอร์มรับสมัครใหม่โดยให้เรียก NewReg() อีกครั้งหนึ่ง


ผมลองเรียกพิมพ์ NewReg();
1. โดยเอาไปต่อจาก  frm.submit(); ทำงานได้ครับ แต่บางครั้ง จะบันทึกไม่ได้  เหมือนว่าจะเรียก NewReg();เร็ว โดยเฉพาะ chorme ครับ
2ลองใช้คำสั่ง setTimeout("NewReg();", 3000); ก็เจอปัญหาเดิมอีกครับ

3.เอาไปวางต่อ  alert('บันทึกข้อมูลเรียบร้อยแล้ว');  ไม่ได้ครับ มันไม่กลับไปแสดง มี error ประมาณว่าไม่รู้จัก NewReg(); ครับ
4.ลองใช้ window.location="index.php?aa=1";ก็ไม่ กลับไปหน้า index ครับ
ผมรบกวนขอคำแนะนำด้วยครับ  ขอบคุณมากๆๆครับ 

หน้าหลัก inex.php
<script>
function NewReg() {
 var URL = "reg.php"; 
 var data = "action=NewReg";
 ajaxLoad('get', URL, data, 'formDiv');
}
function reg2DB() {
 if (ChkValid() == true){
  frm.submit();
 } else
  return false;
}
</script>


reg.php หน้าที่ ส่งค่า ไปหา
<?
.......
echo "<script>
    alert('บันทึกข้อมูลเรียบร้อยแล้ว');  
</script>
";
?>

2 ความคิดเห็น

1. ต่อหลังจาก submit ไม่ได้ เพราะ ajax ทำงานแบบ asynchronous ดังนั้น ในขณะที่เรียกใช้ฟังก์ชั่นถัดจาก submit บางครั้งมันอาจยังส่งไป Ajax ไม่สำเร็จ

ในทางปฏิบัติ ถ้าต้องการทำคำสั่งหลังจากการตอบกลับแล้ว ก็ต้องใช้ทำคำสั่งใน onreadystatechange ครับ ซึ่งถ้าเป็น JQuery หรืออื่นๆอาจมีวิธีเรียกใช้ต่างๆกันนะครับ

หรือ ให้ส่ง Ajax แบบ synchronous แทน

2.-4. ผมไม่แน่ใจในปัญหา แต่อยากเตือนว่า ในหน้าที่ Ajax เรียกเราจะไม่สามารถใส่ Javascript ได้นะครับ ดังนั้น ฟังก์ขั่น NewReg และ regDB จะต้องใส่ไว้ที่ไฟล์ js ภายนอก
1

ขอบคุณพี่มากๆครับ...
2
^