问题所在:
当我们想让应用层和http之间的所有接口都采用json,这样,客户端代码就可以纯碎用javascript的对象来编写,服务器打啊也可以纯粹的用Java的对象来编写。
我们使用的是post请求的方法,有些不同于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请求主体 JSONObject jsonObj=new JSONObject(json);//解析json字符串 String name=(String)(jsonObj.get("name"));//读取解析后的对象 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的形式输出对象-->
另外我们还要用到包装集:
prototype.js
和json.js
效果如下:
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
内蒙古资源网 Copyright www.nmgbbs.com
暂无“使用post方法实现json往返传输数据的方法”评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。