放學後,吃晚餐時,賈伯伯又提起另一個故事,也是我「唯二」記得的故事。第一個是上一篇的輕功,這是第二篇。
關於賈伯伯請參考輕功這篇文章:
國民黨要找人當兵,小柱(賈伯伯)二話不說就去參加了。他跟家裡說,戰亂時代當兵最好,有吃有住還有糧餉。等過幾年戰爭結束了,他也存夠了錢,就可以回家蓋房娶妻了。
加入了軍隊後,跟著到處打土八路。常有弟兄在戰爭中陣亡,也常有新夥伴加入。有天來了一個弟兄,跟小柱差不多年紀,20來歲。平常沉默不語,老是對著天發呆,又常常唉聲嘆氣,行為舉止一點也不像年輕人應有的活力,倒像4、50歲的人。他姓李,因為他的舉動古怪,隊上的人都叫他李佬,他不引以為意,反倒像是應該的。
那天軍隊來到一個小村莊,行經一座圍牆時,李佬突然不走了,逕自站在那裏,過了一會竟然還哭了起來。這個舉動讓大夥愣住了,帶頭的班長,看到部隊停下來,氣的大聲開罵。聽到李佬在哭,損及革命軍人形象,更是氣的一巴掌往李佬臉上刮去,大罵『你發甚麼神經病,哭個屁阿。』隨即用家鄉土話足足罵了一大串。趁著班頭剛罵完換氣,尚未繼續罵之前,這時候李佬回話了: 『我的屍體埋在這裡。』
這短短的一句話,讓原本騷動的部隊,霎那間安靜下來。
班頭又一個巴掌挂過去:『你是豬頭瘋嗎,再講一次。』
這次李佬用近乎咆嘯的聲音回答: 『我沒騙你,我的屍體真的埋在這裡,就在這座圍牆邊,不信你去挖。』
也不知道安靜了多久,有個好事的弟兄終於說話了: 『那就挖吧,看看是真是假。』接著其他弟兄也跟著起鬨,班頭沒考慮多久,就說: 『挖。我看你到底搞甚麼鬼。』
那個好事的弟兄吆喝著另外兩個人,就這麼三個人跑去挖了。挖了約半個腿高後,真的挖到一具身著藍布衫的骨骸。
大夥不可置信地看著李佬,只見他喃喃自語: 『陳禾,4年前死於盜匪之手。幸得大仙相助,一絲遊魂投身於此軀體。』說完,便脫掉上衣,將挖出的遺骸包起來,然後帶著離開。
眾人看得目瞪口呆,等到回過神來後,小柱第一個發難,口中喊著李佬,要跑過去將他帶回來,結果卻被班頭攔住,班頭只講了一句話:『讓他走,他已死了。』
『後來呢? 』我趁著嘴巴空檔時,問著賈伯伯。
『哪有後來,他就走了阿。沒人知道他去哪,也沒有人會追究他去哪,他只是變成我們茶餘飯後的話題。』賈伯伯說著。
『喔~~』我繼續吃著我的晚餐。
『李佬是借屍還魂囉。』我提出我的問題,嘴巴還在吃著東西。
『應該是吧,他也沒說他投的這個身體是誰的,只說大仙幫他投的,也不知道哪位大仙。』
『喔~~』我繼續吃著我的晚餐。
後記:
賈伯伯原本只是要當個幾年兵,這一當兵,跟著國民黨南征北討,誰知道最後竟落腳在台灣。離家40個年頭後,兩岸開放,賈伯伯才有幸得以回去2次,第一次回去探親,第二次回去就直接住下來,完成他回鄉落葉歸根的心願。
2011年6月23日 星期四
2011年6月17日 星期五
AJAX基礎運作說明
我在找AJAX基礎文章,但是我慧根不夠,老是有看沒有懂。參考兩本書對照之後,總算理出一點頭緒。趁著還有一點印象之前,我用我能理解的方式,做個筆記紀錄一下,免得以後要用時又忘了。
傳統的網頁請求模式,是將整個頁面傳送回Server。而Server整理用戶端的回應後,將整個頁面再全部傳送回給用戶端。
AJAX請求模式,用戶端只有要請求的資料,透過XHR(XMLHttpRequest)這個物件傳送到Server,不再是整個頁面。
Server也不再將整個頁面做回應,它只將要回應的資料,透過XHR送回用戶端。 而XHR擺在頁面上的甚麼地方,就只有那個地方會產生回應資料。大幅減少資料頁面回應的更新。
如果上面還看不懂,舉例來說:
你的電腦風扇壞了,因為你不懂如何修電腦,只好將整台電腦搬到維修公司更換風扇,然後再整台搬回來。
後來,你請了一個助手,他懂如何修電腦。風扇再次壞掉,他只要到維修公司去買了一個風扇回來更換,你的電腦就修好了。XHR就是這位助手。
目前各大瀏覽器及伺服器都支援XHR物件,若XHR執行有問題,先檢查瀏覽器或伺服器是否太舊,導致無法執行。
XHR基本使用方式:
1. 產生一個XHR物件
2. 將用戶端請求,利用XHR物件傳送到Server
3. Server收到後產生回應,將結果回傳。
以下的範例是,當你按下一個按鈕後,XHR會呼叫abc.txt文字檔案,並將內容產生於螢幕上:
============
<html>
<head>
<title>XMLHttpRequest Test</title>
<meta http-equiv="Content-Language" content="zh-tw">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript">
//一、這是一個產生XHR物件標準的函式,檢查瀏覽器是否
//支援ActiveX的XHR物件,若不支援,則使用JavaScript原
//生XHR物件。
var xmlHttp;
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}
//二、這個函式是當用戶端按下按鈕時,XHR會開啟abc.txt檔案
function startRequest()
{
createXMLHttpRequest();
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.open("GET", "abc.txt", true);
xmlHttp.send(null);
}
//三、XHR會在Server回應readyState == 4(完成),status = 200
//(HTTP對應OK)後,因為是文字檔,以”responseText”方法,將
//資料產生在名為”disp”的ID上。
function handleStateChange()
{
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
document.getElementById("disp").innerHTML=xmlHttp.responseText;
}
}
}
</script>
</head>
<body>
<form action="#">
<input type="button" value="click me" onClick="startRequest();" />
<div id="disp"></div>
</form>
</body>
</html>
===========
將範例搞清楚後,再查看網路上XHR所提供的其他方法及屬性,應該就比較清楚如何應用了。
我還在努力了解AJAX中,一起加油吧。
傳統的網頁請求模式,是將整個頁面傳送回Server。而Server整理用戶端的回應後,將整個頁面再全部傳送回給用戶端。
AJAX請求模式,用戶端只有要請求的資料,透過XHR(XMLHttpRequest)這個物件傳送到Server,不再是整個頁面。
Server也不再將整個頁面做回應,它只將要回應的資料,透過XHR送回用戶端。 而XHR擺在頁面上的甚麼地方,就只有那個地方會產生回應資料。大幅減少資料頁面回應的更新。
如果上面還看不懂,舉例來說:
你的電腦風扇壞了,因為你不懂如何修電腦,只好將整台電腦搬到維修公司更換風扇,然後再整台搬回來。
後來,你請了一個助手,他懂如何修電腦。風扇再次壞掉,他只要到維修公司去買了一個風扇回來更換,你的電腦就修好了。XHR就是這位助手。
目前各大瀏覽器及伺服器都支援XHR物件,若XHR執行有問題,先檢查瀏覽器或伺服器是否太舊,導致無法執行。
XHR基本使用方式:
1. 產生一個XHR物件
2. 將用戶端請求,利用XHR物件傳送到Server
3. Server收到後產生回應,將結果回傳。
以下的範例是,當你按下一個按鈕後,XHR會呼叫abc.txt文字檔案,並將內容產生於螢幕上:
============
<html>
<head>
<title>XMLHttpRequest Test</title>
<meta http-equiv="Content-Language" content="zh-tw">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript">
//一、這是一個產生XHR物件標準的函式,檢查瀏覽器是否
//支援ActiveX的XHR物件,若不支援,則使用JavaScript原
//生XHR物件。
var xmlHttp;
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}
//二、這個函式是當用戶端按下按鈕時,XHR會開啟abc.txt檔案
function startRequest()
{
createXMLHttpRequest();
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.open("GET", "abc.txt", true);
xmlHttp.send(null);
}
//三、XHR會在Server回應readyState == 4(完成),status = 200
//(HTTP對應OK)後,因為是文字檔,以”responseText”方法,將
//資料產生在名為”disp”的ID上。
function handleStateChange()
{
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
document.getElementById("disp").innerHTML=xmlHttp.responseText;
}
}
}
</script>
</head>
<body>
<form action="#">
<input type="button" value="click me" onClick="startRequest();" />
<div id="disp"></div>
</form>
</body>
</html>
===========
將範例搞清楚後,再查看網路上XHR所提供的其他方法及屬性,應該就比較清楚如何應用了。
我還在努力了解AJAX中,一起加油吧。
訂閱:
文章 (Atom)