JavaScript - สร้าง Session ใน JavaScript


เชื่อหรือไม่ว่า JavaScript สามารถสร้าง Session ได้เหมือนกันกับ PHP ASP หรือ JSP

ใน JavaScript นั้นทำงานที่ฝั่ง Client ซึ่งยากต่อการประมวลผลในรูปแบบที่เหมือน Server Side Script โดยเฉพาะอย่างยิ่งเรื่องของ Session ถ้าเป็น PHP ละก็ง่ายนิดเดียวแค่ประกาศ session_start(); และกำหนด Session เช่น $_SESSION['myname']="Manop Kongoon"; ก็เรียบร้อยแล้ว แต่ใน JavaScript จะทำยังไงล่ะ

หลังจากที่เกิดปัญหากับการใช้ Spry Tab ของ Dreamweaver CS5 แล้ว โดยเจ้าปัญหามีอยู่ว่า "หลังจากที่เลือก Tab แล้วพอมีการ Refresh หน้าเว็บ Tab จะไปเริ่มที่ Tab แรกเสมอ เช่น เราเลือก Tab ที่ 10 แล้วกรอกข้อมูลเพื่อบันทึกข้อมูล เมื่อกดปุ่มบันทึกหน้าเว็บจะเปลี่ยนไปหน้าประมวลผล แล้วย้อนกลับมาที่หน้าเดิม ผลคือ Tab แรกจะถูกเลือก ทำให้ต้องเสียเวลาไปกด Tab 10 ใหม่ เป็นต้น"

 โอเคครับมาเริ่มกันเลยดีกว่า

ไฟล์ cookie.js
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}

function eraseCookie(name) {
createCookie(name,"",-1);
}

-------------------------------------------------------------------

วิธีการใช้งาน

ไฟล์ที่มี Spry TabbedPanels
<script type="text/javascript" src="js/cookie.js"></script>
ในส่วนของการเลือก Tab ใน Spry ให้ใส่ดังนี้
  <ul class="TabbedPanelsTabGroup">
    <li class="TabbedPanelsTab" tabindex="0" onmousedown="createCookie('cur_tab',0);">ข้อมูลส่วนตัว</li>
    <li class="TabbedPanelsTab" tabindex="1" onmousedown="createCookie('cur_tab',1);">ประวัติการศึกษา</li>
    <li class="TabbedPanelsTab" tabindex="2" onmousedown="createCookie('cur_tab',2);">ประวัติการไปราชการ ฝึกอบรม และดูงาน</li>
    <li class="TabbedPanelsTab" tabindex="3" onmousedown="createCookie('cur_tab',3);">ชี้แจงข้อเท็จจริง</li>
    <li class="TabbedPanelsTab" tabindex="4" onmousedown="createCookie('cur_tab',4);">การได้รับโทษทางวินัย</li>
    <li class="TabbedPanelsTab" tabindex="5" onmousedown="createCookie('cur_tab',5);">วันที่ไม่ได้รับเงินเดือน</li>
    <li class="TabbedPanelsTab" tabindex="6" onmousedown="createCookie('cur_tab',6);">ตำแหน่งและอัตราเงินเดือน</li>
    <li class="TabbedPanelsTab" tabindex="7" onmousedown="createCookie('cur_tab',7);">รูปถ่าย</li>
    <li class="TabbedPanelsTab" tabindex="8" onmousedown="createCookie('cur_tab',8);">เครื่องราชอิสริยาภรณ์</li>
    <li class="TabbedPanelsTab" tabindex="9" onmousedown="createCookie('cur_tab',9);">วันขาด ลา มาสาย</li>
    <li class="TabbedPanelsTab" tabindex="10" onmousedown="createCookie('cur_tab',10);">ความสามารถพิเศษ</li>
    <li class="TabbedPanelsTab" tabindex="11" onmousedown="createCookie('cur_tab',11);">การปฏิบัติราชการเป็นพิเศษ</li>
    <li class="TabbedPanelsTab" tabindex="12" onmousedown="createCookie('cur_tab',12);">รายการอื่นๆ ที่จำเป็น</li>
  </ul>

ส่วนท้ายของไฟล์หาส่วนนี้แล้วแก้ไขนิดหน่อยครับ
<script type="text/javascript">
<!--
var cu_tab = parseInt(readCookie('cur_tab'));
//alert(cu_tab);
var TabbedPanels1 = new Spry.Widget.TabbedPanels("TabbedPanelsMain", { defaultTab: cu_tab});
//-->
</script>

defaultTab คือ Tab เริ่มต้นตอนเรียกไฟล์ครั้งแรก

ลองทดสอบดูนะครับผมลองแล้วใช้ได้ผลดีมากครับ

ระบบที่ทำอยู่ในข้างต้นคือ ระบบฐานข้อมูลประวัติข้าราชการและบุคลากรมหาวิทยาลัยราชภัฎ (ePersonal) ลองทดสอบดูได้ที่ http://personal.vspruakolfi.com  ^ ^

หมายเลขบันทึก: 367325เขียนเมื่อ 18 มิถุนายน 2010 03:50 น. ()แก้ไขเมื่อ 22 มิถุนายน 2012 11:05 น. ()สัญญาอนุญาต: ครีเอทีฟคอมมอนส์แบบ แสดงที่มา-ไม่ใช้เพื่อการค้า-อนุญาตแบบเดียวกันจำนวนที่อ่านจำนวนที่อ่าน:


ความเห็น (4)

อ่านแล้วอย่าลืมแสดงความคิดเห็นด้วยนะครับ

ใช้งานได้ดี ขอขอบคุณสำหรับการแบ่งปันครับ

พบปัญหาการใช้งานกรุณาแจ้ง LINE ID @gotoknow
ClassStart
ระบบจัดการการเรียนการสอนผ่านอินเทอร์เน็ต
ทั้งเว็บทั้งแอปใช้งานฟรี
ClassStart Books
โครงการหนังสือจากคลาสสตาร์ท