jQuery-Ajax

2019-06-05

jQuery封裝了Ajax的交互過程幻妓,用戶無需使用XMLHttpRequest對象的原生方法,即可輕松實現(xiàn)Ajax應(yīng)用忱嘹。

load方法

通過Ajax請求從服務(wù)器加載數(shù)據(jù)載入到指定元素中。如果沒有參數(shù)傳遞,則采用GET方式發(fā)送請求躏鱼;反之自動轉(zhuǎn)換為POST方式。

$("選擇器").load(url,data,function(data,status,xhr)) 
參數(shù) 描述
url 服務(wù)器地址
data 可選殷绍。發(fā)送到服務(wù)器的數(shù)據(jù)染苛。其格式為json 注意:如要傳遞數(shù)組元素,可使用如下語法: { 'choices[]': ["Jon", "Susan"]}
function(data,status,xhr) 可選主到。請求完成時運行的函數(shù)茶行。 參數(shù): data: 服務(wù)器的響應(yīng)數(shù)據(jù) status : 響應(yīng)狀態(tài)("success", "notmodified", "error", "timeout" 或 "parsererror") xhr : 包含XMLHttpRequest

getScript方法

通過get請求載入并執(zhí)行外部的JavaScript文件。

$.getScript(url,function(data,status)); 
參數(shù) 描述
url 目標(biāo)JS文件路徑登钥∨鲜Γ可以跨域調(diào)用。
function(data,status) 可選牧牢。請求成功后執(zhí)行的回調(diào)函數(shù)看锉。 參數(shù): data : 服務(wù)器響應(yīng)數(shù)據(jù) status : 響應(yīng)狀態(tài)("success", "notmodified", "error", "timeout" 或 "parsererror")

get/post方法

通過get/post方式向服務(wù)器發(fā)送Ajax請求。

  $.get(url,data,function(data,status,xhr),dataType)
  $.post(url,data,function(data,status,xhr),dataType)  
參數(shù) 描述
url 必需塔鳍。服務(wù)器地址伯铣。
data 可選。發(fā)送到服務(wù)器的數(shù)據(jù)轮纫。如果參數(shù)是中文腔寡,必須使用encodeURI進(jìn)行轉(zhuǎn)碼,在客戶端接收時掌唾,使用decodeURI進(jìn)行解碼放前。
function(data,status,xhr) 可選。請求成功時運行的函數(shù)糯彬。 參數(shù): data – 服務(wù)器響應(yīng)數(shù)據(jù) status – 響應(yīng)狀態(tài)("success", "notmodified", "error", "timeout" 或 "parsererror") xhr - 包含 XMLHttpRequest對象
dataType 可選凭语。服務(wù)器響應(yīng)的數(shù)據(jù)類型。 默認(rèn)jQuery將智能判斷撩扒。 可能的類型:"xml"似扔、"html"、"text"、"script"虫几、"json"锤灿、"jsonp"

getJSON方法

使用get請求來獲得 JSON 數(shù)據(jù)

  $.getJSON(url,data,function(data,status,xhr){
  
  });

ajax方法

ajax方法是jQuery實現(xiàn)Ajax的底層方法。是get()辆脸、post()等方法的基礎(chǔ)但校。

$.ajax({
    參數(shù)名1:參數(shù)值1,
    參數(shù)名2:參數(shù)值2,
      … …
});
參數(shù)名 類型 描述
url String 發(fā)送請求的地址(默認(rèn)為當(dāng)前頁面)
type String 數(shù)據(jù)請求方式(post或get),默認(rèn)為get
data String 或Object 發(fā)送到服務(wù)器的數(shù)據(jù)啡氢。如果不是字符串則自動轉(zhuǎn)成字符串格式状囱,如果是get請求方法,那么倘是,該字符串將附在url后面亭枷。 必須為 Key/Value 格式。如果為數(shù)組搀崭,jQuery 將自動為不同值對應(yīng)同一個名稱叨粘。如 {foo:["bar1", "bar2"]} 轉(zhuǎn)換為 '&foo=bar1&foo=bar2'。
dataType String 服務(wù)器返回的數(shù)據(jù)類型瘤睹,如果沒有指定升敲,jQuery將自動根據(jù)HTTP包MIME信息自動判斷,服務(wù)器返回的數(shù)據(jù)根據(jù)自動判斷的結(jié)果進(jìn)行解析轰传,傳遞給回調(diào)函數(shù)驴党,其可用類型為: html:返回純文本的HTML信息,包含Script標(biāo)記會在插入頁面時被執(zhí)行 script:返回純文本JavaScript代碼 text:返回純文本字符串 xml:返回可被jQuery處理的XML文檔 json:返回JSON格式的數(shù)據(jù)
beforeSend Function 回調(diào)函數(shù)获茬。在發(fā)送請求之前調(diào)用港庄,并且傳入一個 XMLHttpRequest 作為參數(shù)。由于該函數(shù)本身是jQuery事件恕曲,因此鹏氧,如果函數(shù)返回false,則表示取消本次事件
complete Function 回調(diào)函數(shù)码俩,請求完成后調(diào)用度帮。該函數(shù)無論數(shù)據(jù)發(fā)送成功或失敗都會調(diào)用,其中有兩個參數(shù)稿存,一個是XMLHttpRequest對象,另一個是strStatus瞳秽,包含成功或錯誤代碼的字符串瓣履。
success Function 回調(diào)函數(shù),請求成功后調(diào)用练俐。該函數(shù)有兩個參數(shù)袖迎,一個是根據(jù)參數(shù)dataType處理后服務(wù)器返回的數(shù)據(jù),另一個是strStatus,用于描述成功狀態(tài)的字符串燕锥。
error Function 回調(diào)函數(shù)辜贵,請求失敗后調(diào)用。該函數(shù)有三個參數(shù)归形,一個是XMLHttpRequest對象托慨,第二個是出錯信息strError,第三個是捕捉到的錯誤對象strObject
timeout Number 請求超時的時間(毫秒)暇榴,該設(shè)置將覆蓋$.ajaxSetup()方法中的同樣設(shè)置
global Boolean 是否響應(yīng)全局事件厚棵,默認(rèn)true響應(yīng),false則全局事件$.ajaxStart等將不響應(yīng)蔼紧,
async Boolean 默認(rèn)值: true婆硬。默認(rèn)設(shè)置下,所有請求均為異步請求奸例。如果需要發(fā)送同步請求彬犯,請將此選項設(shè)置為 false。 注意查吊,同步請求將鎖住瀏覽器躏嚎,用戶其它操作必須等待請求完成才可以執(zhí)行。
cache Boolean 是否進(jìn)行緩存菩貌,true表示進(jìn)行緩存卢佣,false表示不進(jìn)行頁面緩存。默認(rèn)值: true箭阶。
$.ajax({
      url:服務(wù)器地址,
      type:請求類型get或post,默認(rèn)為get
      cache:是否緩存true/false,
      dataType:服務(wù)器返回數(shù)據(jù)的類型虚茶,缺省可自動判斷,默認(rèn)text,
      data:向服務(wù)器發(fā)送的請求參數(shù){key:value},
      success:function(response){}, 請求成功返回時的回
      調(diào)函數(shù),形參response獲取服務(wù)器的返回值
      error:function(xhr,status){}失敗時的回調(diào)函數(shù)仇参,形參 
      status是狀態(tài)信息嘹叫,xhr是當(dāng)前的異步對象
  });

設(shè)置Ajax全局選項

在頁面中有時需要多次調(diào)用.ajax()方法,如果每個方法都設(shè)置其中的參數(shù)細(xì)節(jié)非常麻煩诈乒。為了簡化代碼罩扇,jQuery提供.ajaxSetup()方法設(shè)置全局性的Ajax默認(rèn)選項。

$.ajaxSetup({參數(shù)名1:參數(shù)值1,參數(shù)名2:參數(shù)值2});  

Ajax全局事件

事件名稱 參數(shù) 功能描述
ajaxComplete(callback) callback Ajax請求完成時執(zhí)行怕磨,即使請求并未成功喂饥。該方法會在每個Ajax請求完成時觸發(fā)。
ajaxError(callback) callback Ajax請求發(fā)生錯誤時執(zhí)行肠鲫,其中捕捉到的錯誤可以作為最后一個參數(shù)傳遞
ajaxSend(callback) callback Ajax請求開始時執(zhí)行
ajaxStart(callback) callback Ajax請求發(fā)送前執(zhí)行员帮。無論在何時發(fā)送 Ajax 請求,jQuery 都會檢查是否存在其他 Ajax 請求导饲。如果不存在捞高,則 jQuery 會觸發(fā)該 ajaxStart 事件氯材。在此時,由 .ajaxStart() 方法注冊的任何函數(shù)都會被執(zhí)行硝岗。
ajaxStop(callback) callback Ajax請求結(jié)束時執(zhí)行氢哮。當(dāng) AJAX 請求完成時,jQuery 會檢查是否存在更多的 AJAX 請求型檀。如果沒有其他請求正在等待運行冗尤,ajaxStop()方法會運行指定的函數(shù)。
ajaxSuccess(callback) callback Ajax請求成功時執(zhí)行

表單序列化

jQuery的serialize方法可以自動將提交的表單元素值轉(zhuǎn)換成url參數(shù)(參數(shù)1=值1&參數(shù)2=值2) 贱除。

$("表單選擇器").serialize()

JSON應(yīng)用

方式一:使用eval函數(shù)

eval("(" + 字符串 + ")")

方式二:使用JSON對象

JSON.parse(字符串);//將字符串解析為JSON

JSON.stringify(JSON對象);//將JSON解析為字符串

方式三:使用jQuery

$.parseJSON(字符串)

FormData對象

通過FormData對象可以組裝一組用Ajax發(fā)送的鍵/值對生闲。可以更靈活向服務(wù)器發(fā)送表單數(shù)據(jù)月幌。

語法格式一 :通過FormData對象發(fā)送表單數(shù)據(jù)

var fd = new FormData(表單元素引用);

語法格式二:通過FormData對象發(fā)送任意鍵值對

var fd = new FormData();

fd.append(鍵,值);

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末碍讯,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子扯躺,更是在濱河造成了極大的恐慌捉兴,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件录语,死亡現(xiàn)場離奇詭異倍啥,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)澎埠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進(jìn)店門虽缕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蒲稳,你說我怎么就攤上這事氮趋。” “怎么了江耀?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵剩胁,是天一觀的道長。 經(jīng)常有香客問我祥国,道長昵观,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任舌稀,我火速辦了婚禮啊犬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘扩借。我一直安慰自己椒惨,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布潮罪。 她就那樣靜靜地躺著康谆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嫉到。 梳的紋絲不亂的頭發(fā)上沃暗,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天,我揣著相機(jī)與錄音何恶,去河邊找鬼孽锥。 笑死,一個胖子當(dāng)著我的面吹牛细层,可吹牛的內(nèi)容都是我干的惜辑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼疫赎,長吁一口氣:“原來是場噩夢啊……” “哼盛撑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起捧搞,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤抵卫,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后胎撇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體介粘,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年晚树,在試婚紗的時候發(fā)現(xiàn)自己被綠了姻采。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡爵憎,死狀恐怖慨亲,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情纲堵,我是刑警寧澤巡雨,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站席函,受9級特大地震影響铐望,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜茂附,卻給世界環(huán)境...
    茶點故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一正蛙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧营曼,春花似錦乒验、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽狂塘。三九已至,卻和暖如春鳄厌,著一層夾襖步出監(jiān)牢的瞬間荞胡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工了嚎, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留泪漂,地道東北人歪泳。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓萝勤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親呐伞。 傳聞我的和親對象是個殘疾皇子敌卓,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,500評論 2 359

推薦閱讀更多精彩內(nèi)容

  • jQuery ajax - ajax() 方法 http://www.w3school.com.cn/jquery...
    光劍書架上的書閱讀 1,162評論 0 15
  • 之前在思維導(dǎo)圖中介紹過集中請求Ajax的方法,但是只是匆匆說過荸哟,最近看了一本書假哎,覺得介紹的比較詳細(xì),這里結(jié)合筆者自...
    范小飯_閱讀 33,341評論 23 252
  • jQuery - AJAX 簡介 AJAX 是與服務(wù)器交換數(shù)據(jù)的藝術(shù)鞍历,它在不重載全部頁面的情況下舵抹,實現(xiàn)了對部分網(wǎng)頁...
    鹿守心畔光閱讀 810評論 0 6
  • 沒有學(xué)Ajax之前,就在想這到底是一門什么技術(shù)劣砍,問自己什么是Ajax惧蛹?Ajax有哪些重點概念?Ajax如何運用刑枝?聽...
    張延偉閱讀 2,026評論 0 8
  • 今天發(fā)生一些很尷尬的事香嗓,刻骨銘心呀;總結(jié)來說犯咯兩個錯誤 :一装畅、method屬性靠娱;我一直把這個method給記成給...
    涎涎閱讀 951評論 0 0