Ajax與SpringMVC以JSON格式交互

最近寫ajax跟SpringMVC交互的程序比較多索赏,遇到問題也比較多盼玄,總結(jié)一下。

1潜腻、客戶端jquery使用ajax向服務(wù)器傳值并取返回的值:

$.ajax({

url:url,//服務(wù)地址

data:{"name":"jack"},//請求的參數(shù)

dataType:'json',//返回值格式埃儿,html,json融涣,jsonp等童番,

contentType: 'application/x-www-form-urlencoded',//請求的格式,默認這個威鹿,還有application/json等

type:'POST',//GET或POST

processData:true,//只要不是字符串剃斧,都會轉(zhuǎn)成查詢字符串,可以手動設(shè)置false

success:function(data){//成功時出發(fā)的函數(shù)忽你,返回的是json對象幼东,可以直接取值,如果是jsonp格式,需要自己去殼筋粗。

var userId = data.userId;

},

error:function(XMLHttpRequest, textStatus, errorThrown) {//報錯時觸發(fā)的函數(shù)

var msg = XMLHttpRequest.status+"_"+XMLHttpRequest.readyState+"_"+textStatus+"_"+errorThrown;

}

});

1)type

如果type為GET策橘,那么參數(shù)列表會跟在url后邊,url?name=jack&age=16娜亿,在瀏覽器中可以被用戶看到丽已。
如果type為POST,參數(shù)會在body中傳遞买决,不會被看到沛婴。

2)data

data比較多樣,一般為字符串或json對象督赤。如果是json對象嘁灯,processData 不為false的話,json對象會轉(zhuǎn)成字符串躲舌,
注意:{"name":"jack"}這是json對象丑婿,‘{"name":"jack"}‘這是字符串(json對象的字符串),data需要傳json對象没卸。
想以字符串的形式傳參數(shù)羹奉,需要自己寫成name=jack&age=16 的格式。

3)dataType:

"xml": 返回 XML 文檔约计,可用 jQuery 處理诀拭。
"html": 返回純文本 HTML 信息;包含的 script 標簽會在插入 dom 時執(zhí)行煤蚌。
"script": 返回純文本 JavaScript 代碼耕挨。不會自動緩存結(jié)果。除非設(shè)置了 "cache" 參數(shù)尉桩。注意:在遠程請求時(不在同一個域下)筒占,所有 POST 請求都將轉(zhuǎn)為 GET 請求。(因為將使用 DOM 的 script標簽來加載)
"json": 返回 JSON 數(shù)據(jù) 蜘犁。
"jsonp": JSONP 格式赋铝。使用 JSONP 形式調(diào)用函數(shù)時,如 "myurl?callback=?" jQuery 將自動替換 ? 為正確的函數(shù)名沽瘦,以執(zhí)行回調(diào)函數(shù)革骨。
"text": 返回純文本字符串

4)contentType

默認是application/x-www-form-urlencoded,絕大多數(shù)情況通用,也可根據(jù)需要改為application/json等

2析恋、服務(wù)端取傳過去的值良哲,并返回值

@RequestMapping("mlogin")

public void domLogin(HttpServletRequest request,HttpServletResponse response) {

try{

StringuserId= req.getParameter("userId");

response.setCharacterEncoding("UTF-8");

response.setContentType("application/json; charset=utf-8");

String strJSON = "{\"name\":\"" +userId+ "\"}";

response.getWriter().write(strJSON);

}catch(Exception e){

logger.error("respone Exception : ", e.getMessage());

}

//JsonP格式的數(shù)據(jù)

/*try{

String callback = request.getParameter("callback");

StringuserId= req.getParameter("userId");

response.setCharacterEncoding("UTF-8");

response.setContentType("application/json; charset=utf-8");

String strJSON = callback+"({\"name\":\"" +userId+ "\"})";

response.getWriter().write(strJSON);

}catch(Exception e){

logger.error("respone Exception : ", e.getMessage());

}*/

}

注意點1

不管是json還是jsonp,ajax和服務(wù)器需要統(tǒng)一助隧。

注意點2

另外筑凫,服務(wù)器端以request.getParameter("userId")這種方式取值滑沧,需要客戶端滿足以下條件:
1)、客戶端訪問方式是GET巍实,意味著所有參數(shù)在url后邊滓技。contentType 無所謂。
或者2)棚潦、客戶端是POST令漂,contentType需要為默認的application/x-www-form-urlencoded,data需要是個json對象丸边,或自己把json對象組織成name=jack&age=16形式的字符串叠必。

注意點3

如果contentType 為application/json,那么數(shù)據(jù)會以流的形式寫在inputstream里妹窖,需要自己取出來轉(zhuǎn)換纬朝。用的不多,不寫代碼了骄呼。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末共苛,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蜓萄,更是在濱河造成了極大的恐慌隅茎,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绕德,死亡現(xiàn)場離奇詭異,居然都是意外死亡摊阀,警方通過查閱死者的電腦和手機耻蛇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來胞此,“玉大人臣咖,你說我怎么就攤上這事∈#” “怎么了夺蛇?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長酣胀。 經(jīng)常有香客問我刁赦,道長,這世上最難降的妖魔是什么闻镶? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任甚脉,我火速辦了婚禮,結(jié)果婚禮上铆农,老公的妹妹穿的比我還像新娘牺氨。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布猴凹。 她就那樣靜靜地躺著夷狰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪郊霎。 梳的紋絲不亂的頭發(fā)上沼头,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天,我揣著相機與錄音歹篓,去河邊找鬼瘫证。 笑死,一個胖子當著我的面吹牛庄撮,可吹牛的內(nèi)容都是我干的背捌。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼洞斯,長吁一口氣:“原來是場噩夢啊……” “哼毡庆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起烙如,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤么抗,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后亚铁,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蝇刀,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年徘溢,在試婚紗的時候發(fā)現(xiàn)自己被綠了吞琐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡然爆,死狀恐怖站粟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情曾雕,我是刑警寧澤奴烙,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站剖张,受9級特大地震影響切诀,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜搔弄,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一趾牧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧肯污,春花似錦翘单、人聲如沸吨枉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽貌亭。三九已至,卻和暖如春认臊,著一層夾襖步出監(jiān)牢的瞬間圃庭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工失晴, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留剧腻,地道東北人。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓涂屁,卻偏偏與公主長得像书在,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子拆又,可洞房花燭夜當晚...
    茶點故事閱讀 43,452評論 2 348