一革屠,ajax
1-1.ajax的概念:
? ? ? ? ajax是一種用于與后臺(tái)進(jìn)行異步數(shù)據(jù)交互的技術(shù)凿试,稱(chēng)之為"異步的javascript and xml"
? ? ? ? 全稱(chēng):Asynchronous?javascript and xml,是一種在無(wú)需重新加載整個(gè)網(wǎng)頁(yè)的情況下,能夠更新網(wǎng)頁(yè)局部數(shù)據(jù)的技術(shù)似芝。
1-2.ajax的優(yōu)勢(shì):
? ??????按需取數(shù)據(jù)那婉。
? ? ????頁(yè)面無(wú)刷新。
? ? ????減少帶寬党瓮,降低成本
? ? ????請(qǐng)求速度快
? ? ????提升用戶(hù)體驗(yàn)详炬。
1-3.ajax原理:
? ? 客戶(hù)端通過(guò)XMLHttpRequest向服務(wù)器發(fā)送一個(gè)請(qǐng)求,服務(wù)器響應(yīng)數(shù)據(jù)寞奸,返回給XMLHttpRequest呛谜,在XMLHttpRequest對(duì)象的成功回調(diào)中通過(guò)DOM操作把數(shù)據(jù)展示在頁(yè)面
1-4.請(qǐng)求步驟:
a.創(chuàng)建一個(gè)XMLHttpRequest對(duì)象?? ?
????????var xhr = new?XMLHttpRequest();
????老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 對(duì)象:
? ??????variable=new ActiveXObject("Microsoft.XMLHTTP");
? ? 兼容寫(xiě)法:
??? ?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,對(duì)請(qǐng)求狀態(tài)監(jiān)聽(tīng)
1-5:ajax的readyState狀態(tài)
1-6: http響應(yīng)狀態(tài)碼說(shuō)明:? ? ? ??
??????????1**:請(qǐng)求收到,繼續(xù)處理
??????????2**:操作成功收到枪萄,分析隐岛、接受
??????????3**:完成此請(qǐng)求必須進(jìn)一步處理
??????????4**:請(qǐng)求包含一個(gè)錯(cuò)誤語(yǔ)法或不能完成
??????????5**:服務(wù)器執(zhí)行一個(gè)完全有效請(qǐng)求失敗
??????????100——客戶(hù)必須繼續(xù)發(fā)出請(qǐng)求
??????????101——客戶(hù)要求服務(wù)器根據(jù)請(qǐng)求轉(zhuǎn)換HTTP協(xié)議版本
??????????200——交易成功
??????????201——提示知道新文件的URL
??????????202——接受和處理、但處理未完成
??????????203——返回信息不確定或不完整
??????????204——請(qǐng)求收到瓷翻,但返回信息為空
??????????205——服務(wù)器完成了請(qǐng)求聚凹,用戶(hù)代理必須復(fù)位當(dāng)前已經(jīng)瀏覽過(guò)的文件
??????????206——服務(wù)器已經(jīng)完成了部分用戶(hù)的GET請(qǐng)求
??????????300——請(qǐng)求的資源可在多處得到
??????????301——?jiǎng)h除請(qǐng)求數(shù)據(jù)
??????????302——在其他地址發(fā)現(xiàn)了請(qǐng)求數(shù)據(jù)
??????????303——建議客戶(hù)訪(fǎng)問(wèn)其他URL或訪(fǎng)問(wèn)方式
??????????304——客戶(hù)端已經(jīng)執(zhí)行了GET,但文件未變化
??????????305——請(qǐng)求的資源必須從服務(wù)器指定的地址得到
??????????306——前一版本HTTP中使用的代碼齐帚,現(xiàn)行版本中不再使用
??????????307——申明請(qǐng)求的資源臨時(shí)性刪除
??????????400——錯(cuò)誤請(qǐng)求妒牙,如語(yǔ)法錯(cuò)誤
??????????401——請(qǐng)求授權(quán)失敗
??????????402——保留有效ChargeTo頭響應(yīng)
??????????403——請(qǐng)求不允許
??????????404——沒(méi)有發(fā)現(xiàn)文件、查詢(xún)或URl
??????????405——用戶(hù)在Request-Line字段定義的方法不允許
??????????406——根據(jù)用戶(hù)發(fā)送的Accept拖对妄,請(qǐng)求資源不可訪(fǎng)問(wèn)
??????????407——類(lèi)似401湘今,用戶(hù)必須首先在代理服務(wù)器上得到授權(quán)
??????????408——客戶(hù)端沒(méi)有在用戶(hù)指定的餓時(shí)間內(nèi)完成請(qǐng)求
??????????409——對(duì)當(dāng)前資源狀態(tài),請(qǐng)求不能完成
??????????410——服務(wù)器上不再有此資源且無(wú)進(jìn)一步的參考地址
??????????411——服務(wù)器拒絕用戶(hù)定義的Content-Length屬性請(qǐng)求
??????????412——一個(gè)或多個(gè)請(qǐng)求頭字段在當(dāng)前請(qǐng)求中錯(cuò)誤
??????????413——請(qǐng)求的資源大于服務(wù)器允許的大小
??????????414——請(qǐng)求的資源URL長(zhǎng)于服務(wù)器允許的長(zhǎng)度
??????????415——請(qǐng)求資源不支持請(qǐng)求項(xiàng)目格式
??????????416——請(qǐng)求中包含Range請(qǐng)求頭字段饥伊,在當(dāng)前請(qǐng)求資源范圍內(nèi)沒(méi)有range指示值象浑,請(qǐng)求也不包含If-Range請(qǐng)求頭字段
??????????417——服務(wù)器不滿(mǎn)足請(qǐng)求Expect頭字段指定的期望值,如果是代理服務(wù)器琅豆,可能是下一級(jí)服務(wù)器不能滿(mǎn)足請(qǐng)求
??????????500——服務(wù)器產(chǎn)生內(nèi)部錯(cuò)誤
??????????501——服務(wù)器不支持請(qǐng)求的函數(shù)
??????????502——服務(wù)器暫時(shí)不可用愉豺,有時(shí)是為了防止發(fā)生系統(tǒng)過(guò)載
??????????503——服務(wù)器過(guò)載或暫停維修
??????????504——關(guān)口過(guò)載,服務(wù)器使用另一個(gè)關(guān)口或服務(wù)來(lái)響應(yīng)用戶(hù)茫因,等待時(shí)間
二蚪拦,編寫(xiě)接口
<?php // 接口文件:index.php
? ? ? ? ?date_default_timezone_set('PRC');???//設(shè)置為中國(guó)時(shí)區(qū)
????? ? ?echo date("Y-m-d H-i-s",time());???//輸出當(dāng)前時(shí)間
?>
ajax請(qǐng)求,輸出接口響應(yīng)的的時(shí)間顯示在頁(yè)面
三.緩存處理:
? ? ? ? 以上代碼,在ie中輸出的一直是第一次請(qǐng)求的時(shí)間驰贷,刷新頁(yè)面無(wú)效盛嘿,原因是:在默認(rèn)情況下,IE會(huì)針對(duì)請(qǐng)求地址緩存Ajax請(qǐng)求的結(jié)果括袒。換句話(huà)說(shuō)次兆,在緩存過(guò)期之前,針對(duì)相同地址發(fā)起的多個(gè)Ajax請(qǐng)求锹锰,只有第一次會(huì)真正發(fā)送到服務(wù)端芥炭。在某些情況下,這種默認(rèn)的緩存機(jī)制并不是我們希望的
處理辦法:在url后跟隨一個(gè)隨機(jī)數(shù)或當(dāng)前時(shí)間毫秒數(shù)恃慧,因?yàn)檫@個(gè)值的不同园蝠,瀏覽器會(huì)認(rèn)為這個(gè)請(qǐng)求是一個(gè)與上一次不同的請(qǐng)求。
四ie的編碼處理
? ? ? ? 在get請(qǐng)求中痢士,ie返回的是瀏覽器編碼后的字符彪薛,因此需要對(duì)中文進(jìn)行URI轉(zhuǎn)碼處理,再發(fā)送請(qǐng)求
五.post請(qǐng)求
六.data參數(shù)序列化
七.get請(qǐng)求封裝
八.post請(qǐng)求封裝
九.完全封裝
十怠蹂,用戶(hù)名唯一驗(yàn)證
十一善延,搜索下拉提示
十二,瀑布流(面向?qū)ο螅?/p>