我好久沒有study一些新出現的網路的技術了

因為我一直想離開網路工作這行,幹這行除了收入還算不低外,又累又辛苦,壓力又大,又要學個沒完
這說明天大的興趣都有磨滅的一天..

其實我一直不知道,有些人的網頁為什麼可以不換頁,就可以向伺服器請求資料
像 facebook 那個往下拉到底沒資料了,等一會就會生出資料繼續接在頁尾旳做法
以前這種做法要用get或post重新reload自己的頁面
把已經獲得的資料寫進session裡,然後傳一個參數去給另一頁向資料庫要資料
要到以後,再回到原頁,然後再將舊的session加上新獲得的資料
可是這種方法很不科學,網頁在那邊轉來轉去,然後用戶畫面會閃來閃去
而且,記憶體還要消耗非常大

因此,我也不會這麼做,乾脆載入新的內容比較快

最近晚上沒事幹,想說沒事就來研究一下
原來就這麼簡單(有些code是來自w3cschool的,我把它改寫)

請求頁面

<script type="text/javascript">
xmlHttp=null;
xmlHttp=new XMLHttpRequest();
var x = "";
var c = "";

function fv(a) {
if (xmlHttp!=null)
 {
xmlHttp.open("GET","demo_dom_http.asp?p=" + a , false);
xmlHttp.send(null);
x=xmlHttp.responseText;
c=c+x;
d=document.getElementById("demo") 
d.innerHTML=c; 
}
}
</script>
<div onclick="fv(rs);" style="cursor:pointer">click</div>
<span id="demo">contain</span>

接著,假設用ASP取得資料的話

<%
x=request.querystring("p")
response.write(x)
response.write("<BR>")
response.write("<div onclick='fv(32);' style=cursor:pointer>more</div>")
%>


原來就這麼簡單...這正是..江湖一點訣,說穿不值錢 = =

這種技術真的很強大又很有趣,我真是後悔現在才去研究它
如果我早點懂的話,我現在寫網頁不會是這樣,應該前端看的到的全是HTML,但它卻有資料庫的存取能力
以HTML為檔案可以減少被攻擊的可能,重要的是也不太會曝露出處理頁碼的位置及檔名
如果願意的話,甚致可以把請求頁的名稱寫在session裡,駭客朋友們,就算要灌資料庫都找不到網頁位置啦
它除了可以以靜態的頁面,跑去向資料庫請求資料外
也可以靜態的對寫資料進入資料庫
像在購物頁面中,用戶買了東西進了購物車,跟本就不必換頁
傳一個值去給處理頁面寫入資料庫或記在session()裡就好了

XMLHttpRequest 還很有的研究,這東西絕對可以玩到非常複雜,功能非常強大
如果再配合Jquery玩的話

此外,onreadystatechange事件的處理
XMLHttpRequest在請求資料時,它的xmlhttp.readyState值會依處理階段一直改變
如:

0: 請求未初始化
1: 已連線伺服器
2: 請求已接收
3: 資料正在處理中
4: 請求已經完成,同時已經輸出給當前頁

它的值一但變動

就會觸發

xmlhttp.onreadystatechange=function(){}

所以呢..readyState還沒到4時,就讓一個loading的gif在那邊轉轉轉
readyState=4的時候,就可以讓那個gif設為隱藏
這就是當資料在讀取時,有個loading先出現,等資料就緒時消失,列出資料的做法

我想AJAX的應用,大概到這裡就很夠用了

哎,越寫越像在寫程式說明,不怎喜歡寫這類東西的..

我常覺得一些很難的事,弄懂它後,常覺得怎這麼簡單 XD
其實這要感謝像開發Jquery 的 John Resig 這種神級的IT寫了一些函式
現代的開發人員,其實已經不像在寫程式了,比較像是在應用函式

順便抱怨一下,話說痞客邦做了新後台
以開發人員+美工人員+部落客的身份來說,我的感覺坦白說新後台純粹就是「自我感覺美好」
非常不好用,這並不是習慣的問題,而是真的很不好用
而且一些框架是有問題的,我剛才在TABLE裡貼程式就出包
不過,還好,痞客邦並沒有強制使用,還是可以切回舊後台

arrow
arrow
    全站熱搜

    半熟園丁 發表在 痞客邦 留言(0) 人氣()