เรื่อง Ajax Refech หน้า ครับ
คือผมได้ อ่าน บทความใน บทที่ 15 แล้ว ลอง ประยุกต์ครับ แต่ ผล ลัพธ์ ได้ Set_Cookie is not defined ครับ
Code ครับ
var HttPRequest = false; //กำหนด ตัวแปร HttpRequest
function AjaxLoadPage(url) { //function AjaxLoadPage
HttPRequest = false; //กำหนด ตัวแปร HttpRequest
if (window.XMLHttpRequest) { // Mozilla, Safari,...
HttPRequest = new XMLHttpRequest(); //HttpRequest แสดงผลบน Mozilla, Safari, Opera
if (HttPRequest.overrideMimeType) { //---ไม่รู้ -*-
HttPRequest.overrideMimeType('text/html');
}
} else if (window.ActiveXObject) { // IE
try { //ดักจับความผิดพลาด
HttPRequest = new ActiveXObject("Msxml2.XMLHTTP"); // ตัวแปร Msxml2.XMLHTTP และ ตัวแปร Microsoft.XMLHTTP เป็นตัวแสดงผล Object บน IE
} catch (e) {
try { //ดักจับความผิดพลาด //
HttPRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!HttPRequest) { //ถ้าไม่สามารถ HttpReuquest ให้แสดง alert ();
alert('Cannot create XMLHTTP instance');
return false; // ส่งค่ากลับ เป็น false;
}
// จบการสร้าง Object XMLHttpRequest
var pmeters = "";
HttPRequest.open('POST',url,true); // ส่งค่า แบบ POST,url ปลายทาง, ตรรกะ เป็น แบบ asyne
HttPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); //ส่งค่า Header ไปยังปลายทาง
HttPRequest.setRequestHeader("Content-length", pmeters.length); //ส่งค่า Header ไปยังปลายทาง
HttPRequest.setRequestHeader("Connection", "close"); //ส่งค่า Header ไปยังปลายทาง
HttPRequest.send(pmeters); //ส่งค่า Parameter ไปยัง Page ปลายทาง
//*** Loading (Client -> Server) ***//
document.getElementById("ImageLoading").style.display = ''; //ImageLoading แสดงผล
document.getElementById("mySpan").style.display = 'none'; // MySpan ปิดการแสดงผล
HttPRequest.onreadystatechange = function()
{
if(HttPRequest.readyState == 3) // Loading Request กำลังประมูลผล
{
document.getElementById("ImageLoading").style.display = ''; //ImageLoading แสดงผล
document.getElementById("mySpan").style.display = 'none'; // MySpan ปิดการแสดงผล
}
if(HttPRequest.readyState == 4 ){ // Return Request = ประมวลผลเสร็จสิ้น
if(HttPRequest.status == 200){
document.getElementById("ImageLoading").style.display = 'none'; // ปิดการแสดงผลของ ImageLoading
document.getElementById("mySpan").style.display = ''; //แสดงผลของ MySpan
document.getElementById('mySpan').innerHTML = HttPRequest.responseText; //แสดงผล MySpan ในรูปแบบ การแทรก Tag HTML ในตำแหน่งที่ต้องการ ในที่นี้ = MySpan
Set_Cookie( 'url' , 'url' ); //บันทึก module ที่เรียก ลง cookie สำหรับการ refresh หน้า
}
}
}
};
//****************************************************************************//
นี้คือหน้าที่ แสดงผลนะครับ
<body onload="Javascript:AjaxLoadPage('<?php echo ( isset( $_COOKIE['url'] ) ) ? $_COOKIE['url'] : 'DefaultPage.php'?>')">
คำถามคือ
1.ผมไปศึกษาใน google ผมไม่เจอ รูป แบบ Set_Cookie เลยครับ เจอ แต่ แบบ setcookie ครับ พอใช้ก็เหมือนกัน ครับ คือ is not defined ครับ
2.ผมผิดพลาดตรงไหนครับ ช่วยแนะนำด้วยครับ
3.รูปแบบ ของ AJAX มีที่ไหน ศึกษา ได้ เพิ่ม เติม อีกไหมครับ
ยังไง ขอบคุณล่วงหน้า ครับ ผม
Code ครับ
var HttPRequest = false; //กำหนด ตัวแปร HttpRequest
function AjaxLoadPage(url) { //function AjaxLoadPage
HttPRequest = false; //กำหนด ตัวแปร HttpRequest
if (window.XMLHttpRequest) { // Mozilla, Safari,...
HttPRequest = new XMLHttpRequest(); //HttpRequest แสดงผลบน Mozilla, Safari, Opera
if (HttPRequest.overrideMimeType) { //---ไม่รู้ -*-
HttPRequest.overrideMimeType('text/html');
}
} else if (window.ActiveXObject) { // IE
try { //ดักจับความผิดพลาด
HttPRequest = new ActiveXObject("Msxml2.XMLHTTP"); // ตัวแปร Msxml2.XMLHTTP และ ตัวแปร Microsoft.XMLHTTP เป็นตัวแสดงผล Object บน IE
} catch (e) {
try { //ดักจับความผิดพลาด //
HttPRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!HttPRequest) { //ถ้าไม่สามารถ HttpReuquest ให้แสดง alert ();
alert('Cannot create XMLHTTP instance');
return false; // ส่งค่ากลับ เป็น false;
}
// จบการสร้าง Object XMLHttpRequest
var pmeters = "";
HttPRequest.open('POST',url,true); // ส่งค่า แบบ POST,url ปลายทาง, ตรรกะ เป็น แบบ asyne
HttPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); //ส่งค่า Header ไปยังปลายทาง
HttPRequest.setRequestHeader("Content-length", pmeters.length); //ส่งค่า Header ไปยังปลายทาง
HttPRequest.setRequestHeader("Connection", "close"); //ส่งค่า Header ไปยังปลายทาง
HttPRequest.send(pmeters); //ส่งค่า Parameter ไปยัง Page ปลายทาง
//*** Loading (Client -> Server) ***//
document.getElementById("ImageLoading").style.display = ''; //ImageLoading แสดงผล
document.getElementById("mySpan").style.display = 'none'; // MySpan ปิดการแสดงผล
HttPRequest.onreadystatechange = function()
{
if(HttPRequest.readyState == 3) // Loading Request กำลังประมูลผล
{
document.getElementById("ImageLoading").style.display = ''; //ImageLoading แสดงผล
document.getElementById("mySpan").style.display = 'none'; // MySpan ปิดการแสดงผล
}
if(HttPRequest.readyState == 4 ){ // Return Request = ประมวลผลเสร็จสิ้น
if(HttPRequest.status == 200){
document.getElementById("ImageLoading").style.display = 'none'; // ปิดการแสดงผลของ ImageLoading
document.getElementById("mySpan").style.display = ''; //แสดงผลของ MySpan
document.getElementById('mySpan').innerHTML = HttPRequest.responseText; //แสดงผล MySpan ในรูปแบบ การแทรก Tag HTML ในตำแหน่งที่ต้องการ ในที่นี้ = MySpan
Set_Cookie( 'url' , 'url' ); //บันทึก module ที่เรียก ลง cookie สำหรับการ refresh หน้า
}
}
}
};
//****************************************************************************//
นี้คือหน้าที่ แสดงผลนะครับ
<body onload="Javascript:AjaxLoadPage('<?php echo ( isset( $_COOKIE['url'] ) ) ? $_COOKIE['url'] : 'DefaultPage.php'?>')">
คำถามคือ
1.ผมไปศึกษาใน google ผมไม่เจอ รูป แบบ Set_Cookie เลยครับ เจอ แต่ แบบ setcookie ครับ พอใช้ก็เหมือนกัน ครับ คือ is not defined ครับ
2.ผมผิดพลาดตรงไหนครับ ช่วยแนะนำด้วยครับ
3.รูปแบบ ของ AJAX มีที่ไหน ศึกษา ได้ เพิ่ม เติม อีกไหมครับ
ยังไง ขอบคุณล่วงหน้า ครับ ผม
ทำได้ แล้ว ครับผม ขอบคุณมากๆ ครับ
เห็น หลายๆ คนถาม เรื่อง ปุ่ม Back ของ Browser แล้ว เห็น ท่านอาจารย์ ตอบ ว่า ยาก มาก ....
ผมก็เลยคิด ว่า เอ๊ะ อย่างงี้ ผมใช้ AJAX เฉเพราะ เวลาโหลด ข้อมูล จะดีกว่าที่ จะ ทำทุกอย่างด้วย AJAX ดีไหมหว่า เพราะ ท่าใช้ AJAX หมดทุกอย่าง ท่าจะ มี ปัญหา เยอะ ยังไงช่วยแนะนำ ด้วยนะครับผม
ยกตัวอย่าง เว็บผม ใช้ Frame Work GAjax ครับ (ตัวอย่าง เว็บนี้ หรือ GCMS)
พวก JQuery หรือ Frame Work อื่นๆก็มี Plugin เพื่อจัดการเรื่องนี้ครับ ต้องลองศึกษาดู
ปล.ถ้าคิดว่าจะใช้ Ajax เป็นล่ำเป็นสัน แนะนำให้ศึกษา Frame Work จะช่วยให้งานง่ายขึ้น
เด๋วยังไง จะลอง ศึกษา เพิ่มเติม ครับผม เอ่อ อีก นิดหน่อย นะครับผม
อาจารย์ พอ จะมี หนังสือ แนะนำ เรื่อง AJAX แนะนำบ้างไหมครับเพราะตอนนี้ กำลัง เล่น AJAX อย่างจริงจังครับ
ปล.ขอบคุณมากครับ สำหรับคำแนะนำ
5555++ โดยส่วนตัว ไม่มีครับ แต่ก็เห็นมีหนังสือเกี่ยว JQuery อยู่ ซึ่งเท่าที่อ่านดูก็มีประโยชน์ดีครับ
คำแนะนำสำหรับคนอยากใช้ Ajax คือ ต้องหัดใช้งาน Javascript ครับ เพราะ Ajax คือ Javascript ถ้าไม่รู้จักมัน รับค่ากลับมาแล้วก็ไม่รู้ว่าจะเอามันไปทำอะไรต่ออยู่ดี
ขอบคุณครับ หลักๆ ก็คงต้อง เน้น JavaScript อ่านะครับ
งั้นตอนนี้ ก็คงต้อง หัดใช้ไป เรื่อยๆ ก่อน ซะ แล้ว อิอิ ใช้ เฉเพราะ หน้า ที่ จำ เป็น ก่อน
ยังไง ต้อง ขอขอบคุณมากเลย นะ ครับ