AJAX

 

Ajax มีข้อดีหลายอย่าง แต่ก็มีข้อเสียตรงที่ไม่สามารถใช้งานปุ่ม Back และ Forward ของบราวเซอร์ได้

วิธีแก้ อ่านเจอที่ Really Simple History

เป็นการเก็บค่า page history ไว้ที่เครื่องของ client
ต้องดาวน์โหลดไลบรารีมาไว้ด้วย
$ mkdir -p include; cd include
$ wget http://codinginparadise.org/projects/dhtml_history/dhtmlHistory.js
$ cd ..

สร้างโดยเวลาเรียกเว็บเพจ ต้องให้โปรแกรมทำงานก่อน โดยใช้ <body onload="initialize();">
ดังนี้

<head>
 

ต้องการทำป้าย Loading ... แบบที่กูเกิลใช้
ทดลองแกะดู เขาใช้ css เป็นทำนองนี้ (แก้ไขและเปลี่ยนแปลงจากต้นฉบับแล้ว)

...
.hidden {
  display: none; 
}
#loading {
  position: absolute;
  top: 14em;
  height: 2em;
  left: 49%;
  z-index: 10000;
}
#loading p {
  padding: .5em 40px .5em 40px;
  text-align: center;
  line-height: 2em;
  color: #c66;
  background: #fee;
  border: solid 1px #c99;
}
...

เวลาใส่ในข้อความ html ก็ใช้ทำนองว่า...

...
<div id="loading" class="hidden"><p>Loading ... </p></div>
...

เวลาถูกเรียกใช้งานด้วยจาวาสคริปต์ โดยเมธอด POST

Topic: 
 

จากคราวก่อนตัวอย่างเป็นการใช้งานฟังก์ชั่น open ใน Ajax แบบใช้เมธอด GET
ปัญหาของเมธอด GET คือการส่งผ่านค่าผ่าน url ทำให้รหัสอักขระเปลี่ยน
อีกอย่างนึงคือส่งผ่านข้อความยาวมาก ๆ ไม่ได้ เลยต้องใช้เมธอด POST แทน

รูปแบบเก่าของเมธอด GET คือ

...
function d_say(arg1, arg2) {
/* arg1 IN FORM OF "?var1=123&var2=456" */
  if (req.readyState == 4 || req.readyState == 0) {
    url = arg1;
    htmlid = arg2;
    req.onreadystatechange = d_handle;
    req.open("GET", url, true);
    req.send(null);
  }
}
function d_handle() {
  if (req.readyState == 4) {
Topic: 
 

จากการทดลอง Ajax ในครั้งก่อน

Topic: 
 




Test AJAX

Powered by Drupal