這篇文章給大家介紹怎么在jQuery中實(shí)現(xiàn)一個(gè)ajax嵌套請(qǐng)求,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
陽(yáng)江網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,陽(yáng)江網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為陽(yáng)江上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的陽(yáng)江做網(wǎng)站的公司定做!
jquery是一個(gè)簡(jiǎn)潔而快速的JavaScript庫(kù),它具有獨(dú)特的鏈?zhǔn)秸Z(yǔ)法和短小清晰的多功能接口、高效靈活的css選擇器,并且可對(duì)CSS選擇器進(jìn)行擴(kuò)展、擁有便捷的插件擴(kuò)展機(jī)制和豐富的插件,是繼Prototype之后又一個(gè)優(yōu)秀的JavaScript代碼庫(kù),能夠用于簡(jiǎn)化事件處理、HTML文檔遍歷、Ajax交互和動(dòng)畫,以便快速開(kāi)發(fā)網(wǎng)站。
//發(fā)送一個(gè)ajax請(qǐng)求,嵌套的ajax請(qǐng)求 'ajaxCall': function(url1, data1, url2, data2){ var returnValue = ''; $.ajax({ type: "POST", url: url1, async: false, data: data1, success: function(data3) { //TODO //外層ajax響應(yīng)成功,就再次發(fā)送ajax請(qǐng)求到第二個(gè)地址 $.ajax({ type: "POST", url: url2, data: data2, async: false, success: function(data4) { //TODO,對(duì)returnValue進(jìn)行賦值 } }); } }); return returnValue; }
注:外層的 AJAX 和內(nèi)層的 AJAX 的 async 屬性都要設(shè)置為 false, 如果不這樣的話, 兩次請(qǐng)求都是異步的, 可能會(huì)導(dǎo)致數(shù)據(jù)獲取不到, 但是也有一個(gè)弊端, 因?yàn)橥? 在異步請(qǐng)求時(shí), 瀏覽器是鎖死狀態(tài), 不能進(jìn)行其他的操作。
jquery中的ajax方法參數(shù)的用法和他的含義:
1.url:
要求為String類型的參數(shù),(默認(rèn)為當(dāng)前頁(yè)地址)發(fā)送請(qǐng)求的地址。
2.type:
要求為String類型的參數(shù),請(qǐng)求方式(post或get)默認(rèn)為get。注意其他http請(qǐng)求方法,例如put和delete也可以使用,但僅部分瀏覽器支持。
3.timeout:
要求為Number類型的參數(shù),設(shè)置請(qǐng)求超時(shí)時(shí)間(毫秒)。此設(shè)置將覆蓋$.ajaxSetup()方法的全局設(shè)置。
4.async:
要求為Boolean類型的參數(shù),默認(rèn)設(shè)置為true,所有請(qǐng)求均為異步請(qǐng)求。如果需要發(fā)送同步請(qǐng)求,請(qǐng)將此選項(xiàng)設(shè)置為false。注意,同步請(qǐng)求將鎖住瀏覽器,用戶其他操作必須等待請(qǐng)求完成才可以執(zhí)行。
5.cache:
要求為Boolean類型的參數(shù),默認(rèn)為true(當(dāng)dataType為script時(shí),默認(rèn)為false),設(shè)置為false將不會(huì)從瀏覽器緩存中加載請(qǐng)求信息。
6.data:
要求為Object或String類型的參數(shù),發(fā)送到 7.dataType: 要求為String類型的參數(shù),預(yù)期服務(wù)器返回的數(shù)據(jù)類型。如果不指定,JQuery將自動(dòng)根據(jù)http包mime信息返回responseXML或responseText,并作為回調(diào)函數(shù)參數(shù)傳遞??捎玫念愋腿缦拢?/p> xml:返回XML文檔,可用JQuery處理。 html:返回純文本HTML信息;包含的script標(biāo)簽會(huì)在插入DOM時(shí)執(zhí)行。 script:返回純文本JavaScript代碼。不會(huì)自動(dòng)緩存結(jié)果。除非設(shè)置了cache參數(shù)。注意在遠(yuǎn)程請(qǐng)求時(shí)(不在同一個(gè)域下),所有post請(qǐng)求都將轉(zhuǎn)為get請(qǐng)求。 json:返回JSON數(shù)據(jù)。 jsonp:JSONP格式。使用SONP形式調(diào)用函數(shù)時(shí),例如myurl?callback=?,JQuery將自動(dòng)替換后一個(gè)“?”為正確的函數(shù)名,以執(zhí)行回調(diào)函數(shù)。 text:返回純文本字符串。 8.beforeSend: 這個(gè)參數(shù)主要是為了在向服務(wù)器發(fā)送請(qǐng)求前,執(zhí)行一些操作。要求為Function類型的參數(shù),發(fā)送請(qǐng)求前可以修改XMLHttpRequest對(duì)象的函數(shù),例如添加自定義HTTP頭。在beforeSend中如果返回false可以取消本次ajax請(qǐng)求。XMLHttpRequest對(duì)象是惟一的參數(shù)。 9.complete: 要求為Function類型的參數(shù),請(qǐng)求完成后調(diào)用的回調(diào)函數(shù)(請(qǐng)求成功或失敗時(shí)均調(diào)用)。參數(shù):XMLHttpRequest對(duì)象和一個(gè)描述成功請(qǐng)求類型的字符串。 10.success: 要求為Function類型的參數(shù),請(qǐng)求成功后調(diào)用的回調(diào)函數(shù),有兩個(gè)參數(shù)。 11.error: 要求為Function類型的參數(shù),請(qǐng)求失敗時(shí)被調(diào)用的函數(shù)。該函數(shù)有3個(gè)參數(shù),即XMLHttpRequest對(duì)象、錯(cuò)誤信息、捕獲的錯(cuò)誤對(duì)象(可選)。ajax事件函數(shù)如下: 12.contentType: 要求為String類型的參數(shù),當(dāng)發(fā)送信息至服務(wù)器時(shí),內(nèi)容編碼類型默認(rèn)為"application/x-www-form-urlencoded"。該默認(rèn)值適合大多數(shù)應(yīng)用場(chǎng)合。 13.dataFilter: 要求為Function類型的參數(shù),給Ajax返回的原始數(shù)據(jù)進(jìn)行預(yù)處理的函數(shù)。提供data和type兩個(gè)參數(shù)。data是Ajax返回的原始數(shù)據(jù),type是調(diào)用 14.dataFilter: 要求為Function類型的參數(shù),給Ajax返回的原始數(shù)據(jù)進(jìn)行預(yù)處理的函數(shù)。提供data和type兩個(gè)參數(shù)。data是Ajax返回的原始數(shù)據(jù),type是調(diào)用 15.global: 要求為Boolean類型的參數(shù),默認(rèn)為true。表示是否觸發(fā)全局ajax事件。設(shè)置為false將不會(huì)觸發(fā)全局ajax事件,ajaxStart或ajaxStop可用于控制各種ajax事件。 16.ifModified: 要求為Boolean類型的參數(shù),默認(rèn)為false。僅在服務(wù)器數(shù)據(jù)改變時(shí)獲取新數(shù)據(jù)。服務(wù)器數(shù)據(jù)改變判斷的依據(jù)是Last-Modified頭信息。默認(rèn)值是false,即忽略頭信息。 17.jsonp: 要求為String類型的參數(shù),在一個(gè)jsonp請(qǐng)求中重寫回調(diào)函數(shù)的名字。該值用來(lái)替代在"callback=?"這種GET或POST請(qǐng)求中URL參數(shù)里的"callback"部分,例如{jsonp:'onJsonPLoad'}會(huì)導(dǎo)致將"onJsonPLoad=?"傳給服務(wù)器。 18.username: 要求為String類型的參數(shù),用于響應(yīng)HTTP訪問(wèn)認(rèn)證請(qǐng)求的用戶名。 19.password: 要求為String類型的參數(shù),用于響應(yīng)HTTP訪問(wèn)認(rèn)證請(qǐng)求的密碼。 20.processData: 要求為Boolean類型的參數(shù),默認(rèn)為true。默認(rèn)情況下,發(fā)送的數(shù)據(jù)將被轉(zhuǎn)換為對(duì)象(從技術(shù)角度來(lái)講并非字符串)以配合默認(rèn)內(nèi)容類型"application/x-www-form-urlencoded"。如果要發(fā)送DOM樹信息或者其他不希望轉(zhuǎn)換的信息,請(qǐng)?jiān)O(shè)置為false。 21.scriptCharset: 要求為String類型的參數(shù),只有當(dāng)請(qǐng)求時(shí)dataType為"jsonp"或者"script",并且type是GET時(shí)才會(huì)用于強(qiáng)制修改字符集(charset)。通常在本地和遠(yuǎn)程的內(nèi)容編碼不同時(shí)使用。 PS: 今天在看 jQuery1.5時(shí),看到了這個(gè) 放上兩個(gè)鏈接: $.when的用法 延遲對(duì)象的用法 關(guān)于怎么在jQuery中實(shí)現(xiàn)一個(gè)ajax嵌套請(qǐng)求就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。function(XMLHttpRequest){
this; //調(diào)用本次ajax請(qǐng)求時(shí)傳遞的options參數(shù)
}
function(XMLHttpRequest, textStatus){
this; //調(diào)用本次ajax請(qǐng)求時(shí)傳遞的options參數(shù)
}
(1)由服務(wù)器返回,并根據(jù)dataType參數(shù)進(jìn)行處理后的數(shù)據(jù)。
(2)描述狀態(tài)的字符串。function(data, textStatus){
//data可能是xmlDoc、jsonObj、html、text等等
this; //調(diào)用本次ajax請(qǐng)求時(shí)傳遞的options參數(shù)
}
function(XMLHttpRequest, textStatus, errorThrown){
//通常情況下textStatus和errorThrown只有其中一個(gè)包含信息
this; //調(diào)用本次ajax請(qǐng)求時(shí)傳遞的options參數(shù)
}
jQuery.ajax
時(shí)提供的dataType參數(shù)。函數(shù)返回的值將由jQuery進(jìn)一步處理。function(data, type){
//返回處理后的數(shù)據(jù)
return data;
}
jQuery.ajax
時(shí)提供的dataType參數(shù)。函數(shù)返回的值將由jQuery進(jìn)一步處理。function(data, type){
//返回處理后的數(shù)據(jù)
return data;
}
$.when()
, 使用這個(gè)就能解決上面的瀏覽器鎖死狀態(tài).var ajax1= $.ajax({
url: url1,
data: data1
});
var ajax2= $.ajax({
url: url2',
data: data
});
var ajax3= $.ajax({
url: url3,
data: data
});
$.when(ajax1,ajax2,ajax3)
.done(function(data, textStatus, jqXHR){
//TODO
})
.fail(function(data, textStatus, jqXHR){
//TODO
});
當(dāng)前名稱:怎么在jQuery中實(shí)現(xiàn)一個(gè)ajax嵌套請(qǐng)求
當(dāng)前地址:http://weahome.cn/article/pejsic.html