小猿在日常的工作中啊,經(jīng)常會使用到Ajax動態(tài)網(wǎng)絡(luò)請求技術(shù)清焕。沒錯,阿賈克斯足球隊同音祭犯,但是Ajax真正是什么呢秸妥?想必大伙對這個問題都處于懵懵懂懂的狀態(tài)。小猿打算做個專題沃粗,淺析一下Ajax的意義和用法粥惧,目的是讓讀者一目了然,用的自然最盅。其實Ajax并不是JavaScript的應(yīng)用規(guī)范突雪,全稱是“Asynchronous Javascript And XML”(異步 的JavaScript 和 XML),它是用JavaScript執(zhí)行的異步請求涡贱。
阿賈克斯足球隊
ajax
如果仔細(xì)觀察一個form表單咏删,你會發(fā)現(xiàn),只要提交這個表單问词,瀏覽器就會頁面刷新督函,然后會再新開的頁面或者返回一個你想要的值,或者返回success或error,或者返回一個提示404找不到的頁面辰狡。這就是web的特性:一次請求锋叨,對應(yīng)一個頁面。
如果你提交請求后宛篇,不進行頁面刷新娃磺,請使用Ajax;
如果你提交請求后叫倍,想要在頁面中顯示結(jié)果偷卧,請使用Ajax;
如果你想上傳文件后段标,再上傳多個涯冠,不影響頁面的話炉奴,請使用Ajax逼庞;
如果你想要級聯(lián),校驗瞻赶,翻頁等功能赛糟,請使用Ajax;
Ajax 的工作原理是讓用戶留在當(dāng)前頁面中砸逊,同時發(fā)出新的HTTP請求璧南,就必須用JavaScript發(fā)送這個新請求,接收到數(shù)據(jù)后师逸,再用JavaScript更新頁面司倚,這樣一來,用戶就感覺自己仍然停留在當(dāng)前頁面篓像,但是數(shù)據(jù)卻是在不斷地更新动知。其核心對象是XMLHTTPRequest。它可以在不向服務(wù)器提交整個頁面的情況下员辩,實現(xiàn)局部更新網(wǎng)頁盒粮。當(dāng)頁面全部加載完畢后,客戶端通過該對象向服務(wù)器請求數(shù)據(jù)奠滑,服務(wù)器端接受數(shù)據(jù)并處理后丹皱,向客戶端反饋數(shù)據(jù)。
分享之后我還是要推薦下我自己的前端學(xué)習(xí)群:657137906宋税,不管你是小白還是大牛摊崭,小編我都挺歡迎,不定期分享干貨杰赛,包括我自己整理的一份2017最新的前端資料和零基礎(chǔ)入門教程爽室,送給大家,歡迎初學(xué)和進階中的小伙伴。
說了這么多阔墩,下面來講講常見用法嘿架,介紹一段簡單的Ajax實例。
$.ajax({
type: "post",
url: "",
data: { },
dataType: "text",
success: function(data){ },
error: function(e){ }
});
1.type:要求為String類型的參數(shù)啸箫,請求方式(post或get)默認(rèn)為get耸彪。注意其他http請求方法,例如put和delete也可以使用忘苛,但僅部分瀏覽器支持蝉娜。
2.url : 要求為String類型的參數(shù),(默認(rèn)為當(dāng)前頁地址)發(fā)送請求的地址扎唾。
3.data:?要求為Object或String類型的參數(shù)召川,發(fā)送到服務(wù)器的數(shù)據(jù)。如果已經(jīng)不是字符串胸遇,將自動轉(zhuǎn)換為字符串格式荧呐。get請求中將附加在url后。防止這種自動轉(zhuǎn)換纸镊,可以查看processData選項倍阐。
4.processData:要求為Boolean類型的參數(shù),默認(rèn)為true逗威。默認(rèn)情況下峰搪,發(fā)送的數(shù)據(jù)將被轉(zhuǎn)換為對象(從技術(shù)角度來講并非字符串)以配合默認(rèn)內(nèi)容類型"application/x-www-form-urlencoded"。如果要發(fā)送DOM樹信息或者其他不希望轉(zhuǎn)換的信息凯旭,請設(shè)置為false概耻。
5.datatype:要求為String類型的參數(shù),預(yù)期服務(wù)器返回的數(shù)據(jù)類型罐呼。如果不指定鞠柄,JQuery將自動根據(jù)http包mime信息返回responseXML或responseText,并作為回調(diào)函數(shù)參數(shù)傳遞弄贿〈悍妫可用的類型如下:xml:返回XML文檔,可用JQuery處理差凹。html:返回純文本HTML信息期奔;包含的script標(biāo)簽會在插入DOM時執(zhí)行。script:返回純文本JavaScript代碼危尿。不會自動緩存結(jié)果呐萌。除非設(shè)置了cache參數(shù)。注意在遠程請求時(不在同一個域下)谊娇,所有post請求都將轉(zhuǎn)為get請求肺孤。json:返回JSON數(shù)據(jù)。jsonp:JSONP格式。使用SONP形式調(diào)用函數(shù)時赠堵,例如myurl?callback=?小渊,JQuery將自動替換后一個“?”為正確的函數(shù)名,以執(zhí)行回調(diào)函數(shù)茫叭。text:返回純文本字符串酬屉。
6. success: 要求為Function類型的參數(shù),請求成功后調(diào)用的回調(diào)函數(shù)揍愁,有兩個參數(shù)呐萨。
(1)由服務(wù)器返回,并根據(jù)dataType參數(shù)進行處理后的數(shù)據(jù)莽囤。
(2)描述狀態(tài)的字符串谬擦。
7. error:要求為Function類型的參數(shù),請求失敗時被調(diào)用的函數(shù)朽缎。該函數(shù)有3個參數(shù)惨远,即XMLHttpRequest對象、錯誤信息饵沧、捕獲的錯誤對象(可選)锨络。
8. timeout:要求為Number類型的參數(shù)赌躺,設(shè)置請求超時時間(毫秒)狼牺。此設(shè)置將覆蓋$.ajaxSetup()方法的全局設(shè)置。
9.cache:要求為Boolean類型的參數(shù)礼患,默認(rèn)為true(當(dāng)dataType為script時是钥,默認(rèn)為false),設(shè)置為false將不會從瀏覽器緩存中加載請求信息缅叠。
10.async:要求為Boolean類型的參數(shù)悄泥,默認(rèn)設(shè)置為true,所有請求均為異步請求肤粱。如果需要發(fā)送同步請求弹囚,請將此選項設(shè)置為false。注意领曼,同步請求將鎖住瀏覽器鸥鹉,用戶其他操作必須等待請求完成才可以執(zhí)行。