Submitted by wd on Tue, 2007-03-20 09:08
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>
Submitted by wd on Sun, 2007-03-18 23:35
ต้องการทำป้าย 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
Submitted by wd on Wed, 2007-03-07 18:40
จากคราวก่อนตัวอย่างเป็นการใช้งานฟังก์ชั่น 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) {
Submitted by wd on Tue, 2007-03-06 16:48
Submitted by wd on Thu, 2006-07-06 06:21