一,ajax
1-1.ajax的概念:
? ? ? ? ajax是一種用于與后臺進(jìn)行異步數(shù)據(jù)交互的技術(shù),稱之為"異步的javascript and xml"
? ? ? ? 全稱:Asynchronous?javascript and xml,是一種在無需重新加載整個網(wǎng)頁的情況下,能夠更新網(wǎng)頁局部數(shù)據(jù)的技術(shù)。
1-2.ajax的優(yōu)勢:
? ??????按需取數(shù)據(jù)。
? ? ????頁面無刷新。
? ? ????減少帶寬,降低成本
? ? ????請求速度快
? ? ????提升用戶體驗。
1-3.ajax原理:
? ? 客戶端通過XMLHttpRequest向服務(wù)器發(fā)送一個請求,服務(wù)器響應(yīng)數(shù)據(jù),返回給XMLHttpRequest,在XMLHttpRequest對象的成功回調(diào)中通過DOM操作把數(shù)據(jù)展示在頁面

1-4.請求步驟:
a.創(chuàng)建一個XMLHttpRequest對象?? ?
????????var xhr = new?XMLHttpRequest();
????老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 對象:
? ??????variable=new ActiveXObject("Microsoft.XMLHTTP");
? ? 兼容寫法:
??? ?var xhr = null;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ??if(window.XMLHttpRequest){? ? ? ??
?? ??? ?????????xhr = new XMLHttpRequest();
? ???????}else{? ? ? ?
? ???????????????xhr = new ActiveXObject("Microsoft.XMLHTTP");? ? ??
?????????}
b,調(diào)用xhr的open方法

c,調(diào)用xhr的send方法

d,對請求狀態(tài)監(jiān)聽

1-5:ajax的readyState狀態(tài)

1-6: http響應(yīng)狀態(tài)碼說明:? ? ? ??
??????????1**:請求收到,繼續(xù)處理
??????????2**:操作成功收到,分析、接受
??????????3**:完成此請求必須進(jìn)一步處理
??????????4**:請求包含一個錯誤語法或不能完成
??????????5**:服務(wù)器執(zhí)行一個完全有效請求失敗
??????????100——客戶必須繼續(xù)發(fā)出請求
??????????101——客戶要求服務(wù)器根據(jù)請求轉(zhuǎn)換HTTP協(xié)議版本
??????????200——交易成功
??????????201——提示知道新文件的URL
??????????202——接受和處理、但處理未完成
??????????203——返回信息不確定或不完整
??????????204——請求收到,但返回信息為空
??????????205——服務(wù)器完成了請求,用戶代理必須復(fù)位當(dāng)前已經(jīng)瀏覽過的文件
??????????206——服務(wù)器已經(jīng)完成了部分用戶的GET請求
??????????300——請求的資源可在多處得到
??????????301——刪除請求數(shù)據(jù)
??????????302——在其他地址發(fā)現(xiàn)了請求數(shù)據(jù)
??????????303——建議客戶訪問其他URL或訪問方式
??????????304——客戶端已經(jīng)執(zhí)行了GET,但文件未變化
??????????305——請求的資源必須從服務(wù)器指定的地址得到
??????????306——前一版本HTTP中使用的代碼,現(xiàn)行版本中不再使用
??????????307——申明請求的資源臨時性刪除
??????????400——錯誤請求,如語法錯誤
??????????401——請求授權(quán)失敗
??????????402——保留有效ChargeTo頭響應(yīng)
??????????403——請求不允許
??????????404——沒有發(fā)現(xiàn)文件、查詢或URl
??????????405——用戶在Request-Line字段定義的方法不允許
??????????406——根據(jù)用戶發(fā)送的Accept拖,請求資源不可訪問
??????????407——類似401,用戶必須首先在代理服務(wù)器上得到授權(quán)
??????????408——客戶端沒有在用戶指定的餓時間內(nèi)完成請求
??????????409——對當(dāng)前資源狀態(tài),請求不能完成
??????????410——服務(wù)器上不再有此資源且無進(jìn)一步的參考地址
??????????411——服務(wù)器拒絕用戶定義的Content-Length屬性請求
??????????412——一個或多個請求頭字段在當(dāng)前請求中錯誤
??????????413——請求的資源大于服務(wù)器允許的大小
??????????414——請求的資源URL長于服務(wù)器允許的長度
??????????415——請求資源不支持請求項目格式
??????????416——請求中包含Range請求頭字段,在當(dāng)前請求資源范圍內(nèi)沒有range指示值,請求也不包含If-Range請求頭字段
??????????417——服務(wù)器不滿足請求Expect頭字段指定的期望值,如果是代理服務(wù)器,可能是下一級服務(wù)器不能滿足請求
??????????500——服務(wù)器產(chǎn)生內(nèi)部錯誤
??????????501——服務(wù)器不支持請求的函數(shù)
??????????502——服務(wù)器暫時不可用,有時是為了防止發(fā)生系統(tǒng)過載
??????????503——服務(wù)器過載或暫停維修
??????????504——關(guān)口過載,服務(wù)器使用另一個關(guān)口或服務(wù)來響應(yīng)用戶,等待時間
二,編寫接口
<?php // 接口文件:index.php
? ? ? ? ?date_default_timezone_set('PRC');???//設(shè)置為中國時區(qū)
????? ? ?echo date("Y-m-d H-i-s",time());???//輸出當(dāng)前時間
?>
ajax請求,輸出接口響應(yīng)的的時間顯示在頁面

三.緩存處理:
? ? ? ? 以上代碼,在ie中輸出的一直是第一次請求的時間,刷新頁面無效,原因是:在默認(rèn)情況下,IE會針對請求地址緩存Ajax請求的結(jié)果。換句話說,在緩存過期之前,針對相同地址發(fā)起的多個Ajax請求,只有第一次會真正發(fā)送到服務(wù)端。在某些情況下,這種默認(rèn)的緩存機(jī)制并不是我們希望的
處理辦法:在url后跟隨一個隨機(jī)數(shù)或當(dāng)前時間毫秒數(shù),因為這個值的不同,瀏覽器會認(rèn)為這個請求是一個與上一次不同的請求。

四ie的編碼處理
? ? ? ? 在get請求中,ie返回的是瀏覽器編碼后的字符,因此需要對中文進(jìn)行URI轉(zhuǎn)碼處理,再發(fā)送請求

五.post請求
六.data參數(shù)序列化
七.get請求封裝
八.post請求封裝
九.完全封裝
十,用戶名唯一驗證
十一,搜索下拉提示
十二,瀑布流(面向?qū)ο螅?/p>