คือผมทำหน้า เพิ่มสินค้า 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 ทั้งหมดในหน้าหลักนะครับ

ขอบคุณครับ

กรกฎ วิริยะ 14 Nov 2009 20:33
สั่ง refresh คืออะไร ? ใช้คำสั่งอะไรครับ

xhr.responseText.evalScript();

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

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

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

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

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);

กรกฎ วิริยะ 16 Nov 2009 12:36
ได้ครับ ถ้ามันทำงานได้

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