A-AA+then

รบกวนดูให้หน่อยครับ Gform ของ GAJAX

1,273

คือผมทำหน้า เพิ่มสินค้า product.php โดยให้ submit โดย Gform

alert('Add');
var doAdd = function(xhr){
alert('Add2');
    $E("divPage").innerHTML= xhr.responseText;
 xhr.responseText.evalScript();
};

new GForm('frm_add','',false,doCheck).onsubmit(doAdd);

แล้วให้ฟอร์มส่งไปหน้า product_frm_add.php ในหน้านี้ ผมจะแอดลงฐานข้อมูล แล้วสั่งรีเฟชไปหน้า product.php ซึ่งเมื่อมาถึงหน้า product.php จาวาสคริป มันจะมีปัญหา มันขึ้นว่า Gform is not underfined ซึ่งในหน้า product.php ก็ใช้ Gform ในการ submit ด้วยเหมือนกันครับ

Gform ในหน้า product.php
alert('Add3');
var doPage = function(xhr){
alert('Add4');
    document.getElementById("divPage").innerHTML= xhr.responseText;
 xhr.responseText.evalScript();
};

new GForm('frm','',true,'').onsubmit(doPage);

**ผมใช้ xhr.responseText.evalScript(); เพื่อที่จะไม่ต้องเรียก javascript ทั้งหมดในหน้าหลักนะครับ

ขอบคุณครับ

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

สั่ง refresh คืออะไร ? ใช้คำสั่งอะไรครับ

xhr.responseText.evalScript();

จะเป้นการสั่งให้ Javascript ในหน้าที่ตอบกลับนั้นทำงาน ซึ่งเนื้อหาในหน้าที่ตอบกลับ จะอยู่ใน xhr.responseText

ถ้าจะมีการเปลี่ยนหน้าถัดไปต้องใช้คำสั่ง Javascript ในการโหลดหน้าถัดไปมาแสดงครับ ถึงจะเรียก Javascript เดิมมาใช้งานต่อได้ นั่นหมายความว่าจะไม่สามารถใช้ฟังก์ชั่นในกลุ่ม meta หรือ document.location ได้ เพราะคำสั่งนี้จะเป็นการเริ่มต้นหน้าใหม่

ผมยกตัวอย่างที่พอมองเห็นนะครับ คือบอร์ดนี้แหละ ที่พอเราตั้งคำถาม ครั้งแรกจะ submit ด้วย GForm พอได้รับผลตอบกลับมาแล้ว ก็จะใช้ GAjax ในการโหลดกระทู้ที่โพสต์ไปมาแสดงต่อไปครับ
1

ได้แล้วครับ ขอบคุณครับ แบบนี้พอใช้ได้ปะครับ

alert('Add');
var doAdd = function(xhr){
alert('Add2');
    $E("divPage").innerHTML= xhr.responseText;
 xhr.responseText.evalScript();
 if(xhr.responseText=='Y'){
  getAjax('domain.php','','divPage');
 }
};

new GForm('frm_add','',false,doCheck).onsubmit(doAdd);

2

ได้ครับ ถ้ามันทำงานได้

ถ้าค่าที่ตอบกลับมีแค่ Y ก็ไม่จำเป็นจะต้องใช้ xhr.responseText.evalScript(); ครับ เพราะคงไม่มี Javascript มาทำงาน
3
^