ajax===http://blog.csdn.net/seuge/article/details/8209685
“Asynchronous JavaScript and XML”(非同步JavaScript和XML)
我們操作網頁時往往只需要重新整理網頁上的一部分資料甚至可能是一個文字框內的資料,但是採用傳統的重新整理方式伺服器會把整個頁面重新發送至瀏覽器,瀏覽器再載入整個頁面,這樣不僅浪費了頻寬,而且整個頁面重新整理視覺上也不流暢。
ajax技術解決了這一問題,ajax的思路是我需要重新整理局部資料時給伺服器一個請求,伺服器收到請求後將資料將需要重新整理的資料回送,瀏覽器接受到資料後通過指令碼更新相應位置的資料,這個過程必須是在後台進行的。實現這個過程的核心便是JavaScript對象XmlHttpRequest。該對象在是一種支援非同步請求的技術。簡而言之,XmlHttpRequest使您可以使用JavaScript向伺服器提出請求並處理響應,而不阻塞使用者。
在goahead中的實現:
1.首先是一個前台頁面:
[html] view plain copy <html> <head> <script type="text/javascript"> function loadXMLDoc() { var xmlhttp; if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("myDiv").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","/ajax/",true); xmlhttp.send(); } </script> </head> <body> <div id="myDiv"><h2>需要重新整理的局部內容</h2></div> <button type="button" onclick="loadXMLDoc()">通過 AJAX 實現局部重新整理</button> </body> </html> 把改htm放入伺服器中。
2.在伺服器端實現XMLHttpRequest的請求應答。
為ajax請求專門建立一個handle //和asp 或form一樣,在.c檔案中添加ajax處理函數。
[html] view plain copy int websAjaxHandler(webs_t wp, char_t *urlPrefix, char_t *webDir, int arg, char_t *url, char_t *path, char_t *query) { websHeader(wp); websWrite(wp, T("<body><h2>this is ajax test!</h2>\n")); websFooter(wp); websDone(wp, 200); return 1; } 註冊handle //也是和 asp 或form一樣,註冊
[html] view plain copy websUrlHandlerDefine(T("/ajax"), NULL, 0, websAjaxHandler, 0); 這樣就實現了局部重新整理。
擴充 [html] view plain copy xmlhttp.open("GET","/ajax/",true); xmlhttp.send();
這是後台資料請求,現在僅是示意,所以沒有對ajax請求進行分類,以後可以進行細分比如
xmlhttp.open("GET","/ajax/time",true);
然後響應的在goahead端進行二次判斷,作出響應的應答。
#################################################
以上是特別好的架構
更加詳細的解釋參閱:http://www.w3school.com.cn/ajax/index.asp