GORAGOD.com

freelance, web developer, web designer, hosting, domain name

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

รบกวนสอบขอคำแนะนำหน่อยครับ พอดีผมลองเขียนฟอร์มสมัครสมาชิก+รูป โดยใช้ 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>
";

?>
17 มี.ค. 2555 2 2,027

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



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



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



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

#1

ขอบคุณพี่มากๆครับ...
#2
ความคิดเห็น
ไฟล์อัปโหลด ชนิด jpg, jpeg ขนาดไฟล์ไม่เกิน 2M
^