A-AA+then

เรื่อง Ajax Refech หน้า ครับ

1,756
คือผมได้ อ่าน บทความใน บทที่ 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 มีที่ไหน ศึกษา ได้ เพิ่ม เติม อีกไหมครับ

ยังไง ขอบคุณล่วงหน้า ครับ ผม

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

1

ทดสอบแล้ว ครับ
ทำได้ แล้ว ครับผม ขอบคุณมากๆ ครับ
เห็น หลายๆ คนถาม เรื่อง ปุ่ม Back ของ Browser  แล้ว เห็น ท่านอาจารย์ ตอบ ว่า ยาก มาก ....
ผมก็เลยคิด ว่า เอ๊ะ อย่างงี้ ผมใช้ AJAX เฉเพราะ เวลาโหลด ข้อมูล จะดีกว่าที่ จะ ทำทุกอย่างด้วย AJAX ดีไหมหว่า เพราะ ท่าใช้ AJAX หมดทุกอย่าง ท่าจะ มี ปัญหา เยอะ ยังไงช่วยแนะนำ ด้วยนะครับผม
2

ใช่ครับ เป็นปัญหาโลกแตกระหว่างปุ่ม BACK + NEXT ของ Browser กับการใช้งาน Ajax ซึ่งการแก้ปัญหา ถ้าลงมือทำเอง จะค่อนข้างยากครับ (จริงๆคือไม่มีวิธีง่ายๆ) ทางออกหากต้องการใช้งานจริงๆ ก็แนะนำให้ศึกษาพวก Frame Work ครับ จะทำให้การออกแบบง่ายขึ้น

ยกตัวอย่าง เว็บผม ใช้ Frame Work GAjax ครับ (ตัวอย่าง เว็บนี้ หรือ GCMS)
พวก JQuery หรือ Frame Work อื่นๆก็มี Plugin เพื่อจัดการเรื่องนี้ครับ ต้องลองศึกษาดู

ปล.ถ้าคิดว่าจะใช้ Ajax เป็นล่ำเป็นสัน แนะนำให้ศึกษา Frame Work จะช่วยให้งานง่ายขึ้น
3

ต้องขอคุณมาก จริงๆ ครับ คือได้แนวทางครับผม
เด๋วยังไง จะลอง ศึกษา เพิ่มเติม ครับผม เอ่อ อีก นิดหน่อย นะครับผม
อาจารย์ พอ จะมี หนังสือ แนะนำ เรื่อง AJAX แนะนำบ้างไหมครับเพราะตอนนี้ กำลัง เล่น AJAX อย่างจริงจังครับ
ปล.ขอบคุณมากครับ สำหรับคำแนะนำcool
4

อ้างจากคำตอบที่ #4อาจารย์ พอ จะมี หนังสือ แนะนำ เรื่อง AJAX แนะนำบ้างไหมครับเพราะตอนนี้ กำลัง เล่น AJAX อย่างจริงจังครับ
ปล.ขอบคุณมากครับ สำหรับคำแนะนำcool

5555++ โดยส่วนตัว ไม่มีครับ แต่ก็เห็นมีหนังสือเกี่ยว JQuery อยู่ ซึ่งเท่าที่อ่านดูก็มีประโยชน์ดีครับ

คำแนะนำสำหรับคนอยากใช้ Ajax คือ ต้องหัดใช้งาน Javascript ครับ เพราะ Ajax คือ Javascript ถ้าไม่รู้จักมัน รับค่ากลับมาแล้วก็ไม่รู้ว่าจะเอามันไปทำอะไรต่ออยู่ดี
5

ครับผม
ขอบคุณครับ หลักๆ ก็คงต้อง เน้น JavaScript อ่านะครับ
งั้นตอนนี้ ก็คงต้อง หัดใช้ไป เรื่อยๆ ก่อน ซะ แล้ว อิอิ ใช้ เฉเพราะ หน้า ที่ จำ เป็น ก่อน
ยังไง ต้อง ขอขอบคุณมากเลย นะ ครับ
6
^