2019-11-08

簡(jiǎn)單理解jQuery中.getJSON愉昆、.get万伤、.post、.ajax用法

在WEB開發(fā)中異步請(qǐng)求方式普遍使用纠拔,ajax技術(shù)減少程序員的工作量缸血,也提升用戶交互體驗(yàn)蜜氨。AJAX的四種異步請(qǐng)求方式都能實(shí)現(xiàn)基本需求,閑話不多說(shuō)捎泻,直接切入正題飒炎。

1.$.getJSON

$.getJSON()是專門為ajax獲取json數(shù)據(jù)而設(shè)置的,并且支持跨域調(diào)用笆豁,其語(yǔ)法的格式為:

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">1 $.getJSON( 2 url, //請(qǐng)求URL
3 [data], //傳參郎汪,可選參數(shù)
4 [callback] //回調(diào)函數(shù)赤赊,可選參數(shù)
5  ); </pre>

url:string類型, 發(fā)送請(qǐng)求地址
  data :可選參數(shù)煞赢, 待發(fā)送 Key/value 參數(shù) 抛计,同get,post類型的data
  callback :可選參數(shù)照筑,載入成功時(shí)回調(diào)函數(shù)吹截,同get,post類型的callback

JSON是一種理想的數(shù)據(jù)傳輸格式凝危,它能夠很好的融合與JavaScript或其他宿主語(yǔ)言波俄,并且可以被JS直接使用。使用JSON相比傳統(tǒng)的通過(guò) GET蛾默、POST直接發(fā)送“裸體”數(shù)據(jù)懦铺,在結(jié)構(gòu)上更為合理,也更為安全支鸡。至于jQuery的getJSON()函數(shù)冬念,只是設(shè)置了JSON參數(shù)的 ajax()函數(shù)的一個(gè)簡(jiǎn)化版本。這個(gè)函數(shù)也是可以跨域使用的牧挣,相比get()急前、post()有一定優(yōu)勢(shì)。另外這個(gè)函數(shù)可以通過(guò)把請(qǐng)求url寫 成"myurl?callback=X"這種格式浸踩,讓程序執(zhí)行回調(diào)函數(shù)X叔汁。

特別注意:.getJSON是以GET方式提交數(shù)據(jù),所以不能提交過(guò)大的數(shù)據(jù)量检碗,可選.post。至于如何修改為可用POST方式提交或者擴(kuò)大GET提交數(shù)據(jù)量的問(wèn)題码邻,沒(méi)有深入研究折剃。

[
復(fù)制代碼

](javascript:void(0); "復(fù)制代碼")

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"> 1 //——項(xiàng)目中的實(shí)際案例
2 function changeAnswerShow(id){ 3 .getJSON( 4 "/legalconsult/admin/changeshowanswer",{id:id},    //URL和參數(shù) 5 function(data){ 6 if(data.error==0){                    //回調(diào)函數(shù),與后臺(tái)交互 7 showSuccessMessage("操作成功,正在刷新像屋。怕犁。。己莺。"); 8 setTimeout("window.location.reload()",2200); 9 var i=("td.show"+id+" a i" ); 10 if(i.hasClass("splashy-gem_okay")){ 11 i.removeClass("splashy-gem_okay").addClass("splashy-gem_remove"); 12 }else{ 13 i.removeClass("splashy-gem_remove").addClass("splashy-gem_okay"); 14 } 15 return true; 16 }else{ 17 showErrorMessage(data.error); 18 return false; 19 } 20 } 21 ); 22 }</pre>

[
復(fù)制代碼

](javascript:void(0); "復(fù)制代碼")

2.$.get

**  .get是以**GET方式實(shí)現(xiàn)AJAX請(qǐng)求奏甫,在提交短數(shù)據(jù)時(shí)可用。但我基本不常用凌受,因?yàn)? mathimg=.getJSON完全滿足功能需要阵子,正如上所說(shuō),結(jié)構(gòu)合理胜蛉、更加安全挠进。即便是為了提交長(zhǎng)數(shù)據(jù)色乾,也不會(huì)選用.get,而是.post。但還是要了解其 用法:

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">1 $.get( 2 url, 3 [data], 4 [ callback] 5 ;)</pre>

url:string類型领突,ajax請(qǐng)求的地址暖璧。

data:可選參數(shù),object類型君旦,發(fā)送至服務(wù)器的key/value數(shù)據(jù)會(huì)作為QueryString附加到請(qǐng)求URL中澎办。

callback:可選參數(shù),function類型金砍,當(dāng)ajax返回成功時(shí)自動(dòng)調(diào)用該函數(shù)局蚀。

[
復(fù)制代碼

](javascript:void(0); "復(fù)制代碼")

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"> 1 //項(xiàng)目案例
2 .get( 3 "/legalconsult/answer/focus", 4 {id:id}, 5 function(data){ 6 if(data.error==0){ 7 var su=("#focus_"+id).text();
8 su=parseInt(su);              
9 su++; 10 ("#focus_"+id).text(su);      //后臺(tái)操作成功后返回error==0,在這里進(jìn)行前端操作 11 var i=("#show_"+id); 12 var j=$("<span><p class='icon-ok'></p>已贊同</span>"); 13 i.empty().append(j); 14 return true; 15 }else{ 16 showError(data.error);      //調(diào)用其它函數(shù)捞魁,讀者可忽視 17 return false; 18 } 19 } 20 );</pre>

[
復(fù)制代碼

](javascript:void(0); "復(fù)制代碼")

3.$.post

我在提交評(píng)論或者留言之類的數(shù)據(jù)時(shí)經(jīng)常使用$.post,不廢話上代碼:

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">1 $.post( 2 url, 3 [data], 4 [callback], 5 [type] 6 );</pre>

url:string類型至会,ajax請(qǐng)求的地址。

data:可選參數(shù)谱俭,object類型奉件,發(fā)送至服務(wù)器的key/value數(shù)據(jù)會(huì)作為QueryString附加到請(qǐng)求URL中。

callback:可選參數(shù)昆著,function類型县貌,當(dāng)ajax返回成功時(shí)自動(dòng)調(diào)用該函數(shù)。

type:type為請(qǐng)求的數(shù)據(jù)類型凑懂,可以是html,xml,json等類型煤痕,如果我們?cè)O(shè)置這個(gè)參數(shù)為:json,那么返回的格式則是json格式的接谨,如果沒(méi)有設(shè)置摆碉,就和$.get()返回的格式一樣,都是字符串的脓豪。

這個(gè)方法和.get()用法差不多巷帝,唯獨(dú)多了一個(gè)type參數(shù),那么這里就只介紹type參數(shù)吧扫夜,其他的參考上面.get()的楞泼。

[
復(fù)制代碼

](javascript:void(0); "復(fù)制代碼")

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"> 1 //實(shí)際項(xiàng)目案例
2 function changeMarkShow(id){ 3 .post( 4 "/legalconsult/admin/markquestion",{id:id}, 5 function(data){ 6 if(data.error==0){ 7 showSuccessMessage("操作成功,正在刷新。笤闯。堕阔。。"); 8 setTimeout("window.location.reload()",2200); 9 var i=("td.markshow"+id+" a i" ); 10 if(i.hasClass("splashy-star_full")){ 11 i.removeClass("splashy-star_full").addClass("splashy-gem_empty"); 12 }else{ 13 i.removeClass("splashy-gem_empty").addClass("splashy-gem_full"); 14 } 15 return true; 16 }else{ 17 showErrorMessage(data.error); 18 return false; 19 } 20 }, 21 "json" //聲明數(shù)據(jù)格式
22 ); 23 }</pre>

[
復(fù)制代碼

](javascript:void(0); "復(fù)制代碼")

4.$.ajax

  $.ajax是一種常用的普通封裝異步方式颗味。

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">1 $.ajax(options)超陆;</pre>

options是一個(gè)object類型,它指明了本次ajax調(diào)用的具體參數(shù)脱衙。呈上代碼:

[
復(fù)制代碼

](javascript:void(0); "復(fù)制代碼")

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"> 1 //示例
2 .ajax(
3 url: "/legalconsult/layer/update-info",
4 datatype:"json",
5 type:'post',
6 beforeSend:function(){
7 //函數(shù)體侥猬,數(shù)據(jù)發(fā)送前執(zhí)行例驹。
8 }
9 success:function(){ 10 //函數(shù)體,數(shù)據(jù)發(fā)送成功回調(diào)
11 } 12 error: function(){ 13 //函數(shù)體退唠,數(shù)據(jù)發(fā)送錯(cuò)誤時(shí)執(zhí)行
14 } 15 ); </pre>

[
復(fù)制代碼

](javascript:void(0); "復(fù)制代碼")

以上是我在做項(xiàng)目時(shí)遇到出問(wèn)題時(shí)鹃锈,通過(guò)查資料、測(cè)試得出的可行性方法瞧预;希望對(duì)你有所幫助~~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末屎债,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子垢油,更是在濱河造成了極大的恐慌盆驹,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件滩愁,死亡現(xiàn)場(chǎng)離奇詭異躯喇,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)硝枉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門廉丽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人妻味,你說(shuō)我怎么就攤上這事正压。” “怎么了责球?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵焦履,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我雏逾,道長(zhǎng)嘉裤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任栖博,我火速辦了婚禮价脾,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘笛匙。我一直安慰自己,他們只是感情好犀变,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布妹孙。 她就那樣靜靜地躺著,像睡著了一般获枝。 火紅的嫁衣襯著肌膚如雪蠢正。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天省店,我揣著相機(jī)與錄音嚣崭,去河邊找鬼笨触。 笑死,一個(gè)胖子當(dāng)著我的面吹牛雹舀,可吹牛的內(nèi)容都是我干的芦劣。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼说榆,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼虚吟!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起签财,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤串慰,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后唱蒸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體邦鲫,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年神汹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了庆捺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡慎冤,死狀恐怖疼燥,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蚁堤,我是刑警寧澤醉者,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站披诗,受9級(jí)特大地震影響撬即,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜呈队,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一剥槐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧宪摧,春花似錦粒竖、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至沿彭,卻和暖如春朽砰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工瞧柔, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留漆弄,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓造锅,卻偏偏與公主長(zhǎng)得像撼唾,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子备绽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

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