GORAGOD.com

freelance, web developer, web designer, hosting, domain name

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



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



09 มี.ค. 2554 6 3,038
#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
ความคิดเห็น
ไฟล์อัปโหลด ชนิด jpg, jpeg ขนาดไฟล์ไม่เกิน 2M
^