使用post方法實(shí)現(xiàn)json往返傳輸數(shù)據(jù)的方法
問(wèn)題所在:
當(dāng)我們想讓?xiě)?yīng)用層和http之間的所有接口都采用json,這樣,客戶端代碼就可以純碎用javascript的對(duì)象來(lái)編寫(xiě),服務(wù)器打啊也可以純粹的用Java的對(duì)象來(lái)編寫(xiě)。
我們使用的是post請(qǐng)求的方法,有些不同于get的方法!
客戶端html代碼:
<html> <head> <title>Hello Ajax version 5a</title> <style type='text/css'> * { font-family: Tahoma, Arial, sans-serif; } #helloTitle{ color: #48f; } .sidebar{ background-color: #adf; color: navy; border: solid blue 1px; width: 180px; height: 200px; padding: 2px; margin: 3px; float: left; } </style> <script type='text/javascript' src='prototype.js'></script> <script type='text/javascript' src='json.js'></script> <script type='text/javascript'> window.onload=function(){ $('helloBtn').onclick=function(){ var name=$('helloTxt').value; new Ajax.Request( "hello5a.jsp", { postBody:JSON.stringify({name:name}), onComplete:function(xhr){ var responseObj=JSON.parse(xhr.responseText); update(responseObj); } } ); } } function update(obj){ $('helloTitle').innerHTML="<h1>Hello, <b><i>"+obj.name+"</i></b></h1>"; var likesHTML='<h5>'+obj.initial+' likes...</h5><hr/>'; for (var i=0;i<obj.likes.length;i++){ likesHTML+=obj.likes[i]+"<br/>"; } $('likesList').innerHTML=likesHTML; var recipeHTML='<h5>'+obj.initial+'\'s favourite recipe</h5>'; for (key in obj.ingredients){ recipeHTML+=key+" : "+obj.ingredients[key]+"<br/>"; } $('ingrList').innerHTML=recipeHTML; } </script> </head> <body> <div id='likesList' class='sidebar'> <h5>Likes</h5><hr/> </div> <div id='ingrList' class='sidebar'> <h5>Ingredients</h5><hr/> </div> <div> <div id='helloTitle'> <h1>Hello, stranger</h1> </div> <p>Please introduce yourself by entering your name in the box below</p> <input type='text' size='24' id='helloTxt'></input> <button id='helloBtn'>Submit</button> </div> </body> </html>
jsp代碼:
<jsp:directive.page contentType="application/javascript" import="java.util.*,net.sf.json.*"/> <% //read the request body String json=request.getReader().readLine(); //讀取post請(qǐng)求主體 JSONObject jsonObj=new JSONObject(json);//解析json字符串 String name=(String)(jsonObj.get("name"));//讀取解析后的對(duì)象 jsonObj.put("initial",name.substring(0,1).toUpperCase()); //添加新的值 String[] likes=new String[]{ "JavaScript", "Skiing", "Apple Pie" }; jsonObj.put("likes",likes); Map ingredients=new HashMap(); ingredients.put("apples","3kg"); ingredients.put("sugar","1kg"); ingredients.put("pastry","2.4kg"); ingredients.put("bestEaten","outdoors"); jsonObj.put("ingredients",ingredients); %><%=jsonObj%> <!--以json的形式輸出對(duì)象-->
另外我們還要用到包裝集:
prototype.js
和json.js
效果如下:
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
- rapidjson解析json代碼實(shí)例以及常見(jiàn)的json core dump問(wèn)題
- 利用rapidjson實(shí)現(xiàn)解析嵌套的json的方法示例
- C++中rapidjson組裝繼續(xù)簡(jiǎn)化的方法
- C++中rapidjson將嵌套map轉(zhuǎn)為嵌套json的講解
- C++中rapidjson將map轉(zhuǎn)為json的方法
- C++中rapidjson組裝map和數(shù)組array的代碼示例
- 小程序getLocation需要在app.json中聲明permission字段
- Node.js中package.json中庫(kù)的版本號(hào)(~和^)
- Go JSON編碼與解碼的實(shí)現(xiàn)
- json error: Use of overloaded operator [] is ambiguous錯(cuò)誤的解決方法
相關(guān)文章
js實(shí)現(xiàn)選中復(fù)選框文字變色的方法
這篇文章主要介紹了js實(shí)現(xiàn)選中復(fù)選框文字變色的方法,涉及javascript鼠標(biāo)事件及頁(yè)面元素的相關(guān)操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08layer插件實(shí)現(xiàn)在彈出層中彈出一警告提示并關(guān)閉彈出層的方法
今天小編就為大家分享一篇layer插件實(shí)現(xiàn)在彈出層中彈出一警告提示并關(guān)閉彈出層的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09使用bootstrap莫名其妙出現(xiàn)橫向滾動(dòng)條的問(wèn)題及解決
這篇文章主要介紹了使用bootstrap莫名其妙出現(xiàn)橫向滾動(dòng)條的問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11Electron 打包問(wèn)題:electron-builder 下載各種依賴出錯(cuò)(推薦)
這篇文章主要介紹了Electron 打包問(wèn)題:electron-builder 下載各種依賴出錯(cuò),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07JS動(dòng)態(tài)添加的div點(diǎn)擊跳轉(zhuǎn)到另一頁(yè)面實(shí)現(xiàn)代碼
這篇文章主要介紹了JS動(dòng)態(tài)添加的div點(diǎn)擊跳轉(zhuǎn)到另一頁(yè)面實(shí)現(xiàn)代碼,需要的朋友可以參考下2017-09-09Javascript的表單驗(yàn)證-初識(shí)正則表達(dá)式
JavaScript 可用來(lái)在數(shù)據(jù)被送往服務(wù)器前對(duì) HTML 表單中的這些輸入數(shù)據(jù)進(jìn)行驗(yàn)證。接下來(lái)通過(guò)本文給大家介紹Javascript的表單驗(yàn)證-初識(shí)正則表達(dá)式,對(duì)js表單驗(yàn)證正則表達(dá)式相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2016-03-03JavaScript函數(shù)內(nèi)部屬性和函數(shù)方法實(shí)例詳解
函數(shù)是由事件驅(qū)動(dòng)的或者當(dāng)它被調(diào)用時(shí)執(zhí)行的可重復(fù)使用的代碼塊。通過(guò)本文給大家介紹JavaScript函數(shù)內(nèi)部屬性和函數(shù)方法,感興趣的朋友一起學(xué)習(xí)吧2016-03-03