รบกวนดูให้หน่อยครับ Gform ของ GAJAX
คือผมทำหน้า เพิ่มสินค้า 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 ทั้งหมดในหน้าหลักนะครับ
ขอบคุณครับ
xhr.responseText.evalScript();
จะเป้นการสั่งให้ Javascript ในหน้าที่ตอบกลับนั้นทำงาน ซึ่งเนื้อหาในหน้าที่ตอบกลับ จะอยู่ใน xhr.responseText
ถ้าจะมีการเปลี่ยนหน้าถัดไปต้องใช้คำสั่ง Javascript ในการโหลดหน้าถัดไปมาแสดงครับ ถึงจะเรียก Javascript เดิมมาใช้งานต่อได้ นั่นหมายความว่าจะไม่สามารถใช้ฟังก์ชั่นในกลุ่ม meta หรือ document.location ได้ เพราะคำสั่งนี้จะเป็นการเริ่มต้นหน้าใหม่
ผมยกตัวอย่างที่พอมองเห็นนะครับ คือบอร์ดนี้แหละ ที่พอเราตั้งคำถาม ครั้งแรกจะ submit ด้วย GForm พอได้รับผลตอบกลับมาแล้ว ก็จะใช้ GAjax ในการโหลดกระทู้ที่โพสต์ไปมาแสดงต่อไปครับ
ได้แล้วครับ ขอบคุณครับ แบบนี้พอใช้ได้ปะครับ
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);
ถ้าค่าที่ตอบกลับมีแค่ Y ก็ไม่จำเป็นจะต้องใช้ xhr.responseText.evalScript(); ครับ เพราะคงไม่มี Javascript มาทำงาน