第四天 進(jìn)入Ajax學(xué)習(xí)
Ajax(Asynchronous javaScript and xml)使用腳本操縱HTTP的Web應(yīng)用架構(gòu)。

jQuery對(duì)Ajax的操作進(jìn)行了封裝。常用方法如下。
Load()方法 | load()可以遠(yuǎn)程載入HTML并插入到DOM中。結(jié)構(gòu)為: load(url [,data] [,callback]) · url(String):服務(wù)端資源的url。 · data(Obejct):發(fā)送到服務(wù)器的key/value數(shù)據(jù) · callback(Function):請(qǐng)求完成時(shí)(無論成功或失敗)的回調(diào)函數(shù),在響應(yīng)數(shù)據(jù)已經(jīng)加載到包裝集元素之后被調(diào)用。傳入這個(gè)函數(shù)的參數(shù)是響應(yīng)文本、狀態(tài)碼、以及xhr實(shí)例。 |
get()方法
| .get()使用GET進(jìn)行異步請(qǐng)求。服務(wù)器的狀態(tài)和應(yīng)用的模型數(shù)據(jù)不受GET操作的影響。無論進(jìn)行多少次GET操作,返回的結(jié)果是完全一致的。 $.get()結(jié)構(gòu)為: $.get(url [, data] [, callback] [, type]) $.get()參數(shù)說明: · url(String):請(qǐng)求的服務(wù)器端資源的url · data(Object):以key/value的形式構(gòu)造查詢字符串追加到url · callback(Function):在請(qǐng)求成功(success)時(shí)被調(diào)用。將請(qǐng)求結(jié)果和狀態(tài)傳遞給該方法。 · type(String):服務(wù)器端返回內(nèi)容的格式。 · GET請(qǐng)求會(huì)將參數(shù)跟在url后進(jìn)行傳遞,GET對(duì)傳輸?shù)臄?shù)據(jù)大小有限制(通常不大于2kb),GET方式請(qǐng)求的數(shù)據(jù)會(huì)被瀏覽器緩存,這種情況可能帶來安全問題。 |
post()方法
| .post()發(fā)送到服務(wù)器的數(shù)據(jù)可以用來修改應(yīng)用的模型狀態(tài)。例如,可以添加或刪除信息。 · POST請(qǐng)求則作為HTTP消息的實(shí)體內(nèi)容發(fā)送給Web服務(wù)器,使用POST方式傳遞的數(shù)據(jù)量比GET大得多(理論上不受限制)
|
getScript()方法
| $.getScript()用來加載.js文件,與加載一個(gè)HTML片段一樣,js文件會(huì)自動(dòng)執(zhí)行。
|
getJson()方法 | getJSON()用于加載JSON文件,用法與getScript()相同。
|
$.ajax()方法 | $.ajax()是jquery最底層的實(shí)現(xiàn)。 $.ajax(options) 這個(gè)方法只包含了1個(gè)參數(shù),這個(gè)參數(shù)里面包含了$.ajax()所需要的請(qǐng)求設(shè)置以及回調(diào)函數(shù),參數(shù)以key/value形式存在。 $.ajax()參數(shù)說明: · url(String):發(fā)送請(qǐng)求地址。 · type(String):請(qǐng)求方式(POST或GET),默認(rèn)為GET。其他HTTP請(qǐng)求方法如PUT、DELETE,僅部分瀏覽器支持。 · data(Object或String):發(fā)送到服務(wù)器的數(shù)據(jù)。如果不是字符串,將自動(dòng)轉(zhuǎn)換為字符串格式。GET請(qǐng)求中將附加在url后。對(duì)象必須是key/value格式,例如{id:"xxyh", passWord:"123456"}轉(zhuǎn)換為&id=xxyh&password=123456。如果是數(shù)組,將自動(dòng)為不同值對(duì)應(yīng)同一個(gè)名稱。例如{name:["xxyh","dudu"]}轉(zhuǎn)換:&name=xxyh&name=dudu。 · dataType(String):預(yù)期服務(wù)器返回的數(shù)據(jù)類型。如果不指定,jquery將根據(jù)HTTP包MINE信息返回responseXML或responseText,并作為回調(diào)函數(shù)參數(shù)傳遞。可用類型: o xml:返回XML文檔,可用jquery處理 o html:返回純文本HTML信息,包含的script標(biāo)簽會(huì)插入DOM時(shí)執(zhí)行。 o script:返回純文本Javascript代碼。如果沒有設(shè)置cache參數(shù),不會(huì)自動(dòng)緩存結(jié)果。在遠(yuǎn)程請(qǐng)求時(shí)(不在同一個(gè)域下),所有POST請(qǐng)求都將轉(zhuǎn)為GET請(qǐng)求。 o json:返回JSON數(shù)據(jù)。 o jsonp:JSONP格式。使用JSONP形式調(diào)用函數(shù)時(shí),例如myurl?callback=?,jquery將自動(dòng)替換后一個(gè)“?”為正確的函數(shù)名,以執(zhí)行回調(diào)函數(shù)。 o text:返回純文本字符串。 complete(Function):請(qǐng)求完成后回調(diào)函數(shù)(請(qǐng)求成功或失敗后均調(diào)用)。 參數(shù):xmlhttpRequest對(duì)象和一個(gè)描述成功請(qǐng)求類型的字符串。 function(XMLHttPRequest,textStatus){ this; // 調(diào)用本次Ajax請(qǐng)求時(shí)傳遞的options參數(shù)} success(Function):請(qǐng)求成功回調(diào)函數(shù)。有2個(gè)參數(shù): 參數(shù):由服務(wù)器返回,并根據(jù)dataType參數(shù)進(jìn)行處理后的數(shù)據(jù)和描述狀態(tài)的字符串。 function(data, textStatus) { // data 可能是xmlDoc,jsonObj,html,text等 this; // 調(diào)用本次Ajax請(qǐng)求時(shí)傳遞的options參數(shù)} error(Function):請(qǐng)求失敗時(shí)被調(diào)用的函數(shù)。這個(gè)函數(shù)有3個(gè)參數(shù),即XMLHttpRequest對(duì)象、錯(cuò)誤信息和捕獲的錯(cuò)誤對(duì)象 function(XMLHttpRequest, textStatus, errorThrown){ // 通常情況下textStatus和errorThrown只有一個(gè)包含信息 this; // 調(diào)用本次Ajax請(qǐng)求時(shí)傳遞的options參數(shù)} contentType(String):當(dāng)發(fā)送信息至服務(wù)器時(shí),內(nèi)容編碼類型默認(rèn)為"application/x-www-form-urlencoded"。 jsonp(String):在一個(gè)jsonp請(qǐng)求中重寫回調(diào)函數(shù)的名字。用來替代在“callback=?”這種GET或POST請(qǐng)求中URL參數(shù)里的“callback”部分,例如{jsonp:'onJsonPLoad'}會(huì)導(dǎo)致將“onJsonPLoad=?”傳給服務(wù)器。
|
AJAX代碼調(diào)用示例: $.ajax()方式:(dataType:xml) $.ajax({ type:"get", dataType:"xml", url:"http://mp.toutiao.com/articles/?source_type=0", //返回xml格式信息 beforeSend:function(xmlhttprequest){ $("img").show(); }, success:function(data,status){ $("div").html(""); $("item",data).each(function(i, domEle){ $("div").append("<li>"+$(domEle).children("title").text()+"</li>"); }); }, complete:function(){ $("img").hide(); }, error:function(xmlhttprequest,error){ alert(error); }});
$.ajax()方式:(dataType:html) $.ajax({ type:"post", url:"test.jsp", //返回xml格式字符串,如:<ul><li>aa</li><li>bb</li></ul> data:"index=3&name="+$("#name").val()+"&age="+$("#age").val()+"&sex="+$("input:radio:checked").val(), dataType:"html", timeout:50000, beforeSend:function(xmlhttprequest){ $("div").html("<img id='imgid' src='http://127.0.0.1/imges/loading.gif' />"); }, success:function(xml,status){ $(xml).each(function(){ $(this).children().each(function(){ $("<li></li>").html($(this).text()).appendTo("div"); }); }); }, error:function(xmlhttprequest,error){ alert(error); }, complete:function(){ $("#imgid").hide(); } });
$.ajax()方式:(dataType:script) $.ajax({ type: "post", url: "ajax.jsp", //返回格式如:"var a = {name:'lidi',age:20};" data: "index=5", dataType: "script", success:function(){ alert(a.name); }});
$.ajax()方式:(dataType:json) $.ajax({ type: "post", url: "ajax.jsp", //返回格式如:"{name:'lidi',age:20}" data: "index=5", dataType: "json", success:function(data){ alert(data.name); }}); | |
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注