使用post方法实现json往返传输数据的方法


Posted in Javascript onMarch 30, 2019

问题所在:

当我们想让应用层和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.jsjson.js

效果如下:

使用post方法实现json往返传输数据的方法

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Javascript 相关文章推荐
firefo xml 读写实现js代码
Jun 11 Javascript
关于JavaScript中string 的replace
Apr 12 Javascript
使用JQuery快速实现Tab的AJAX动态载入(实例讲解)
Dec 11 Javascript
js触发onchange事件的方法说明
Mar 08 Javascript
JavaScript代码编写中各种各样的坑和填坑方法
Jun 06 Javascript
javascript学习笔记(二)数组和对象部分
Sep 30 Javascript
浅析Node.js的Stream模块中的Readable对象
Jul 29 Javascript
SpringMVC返回json数据的三种方式
Dec 10 Javascript
微信js-sdk上传与下载图片接口用法示例
Oct 12 Javascript
微信小程序 弹框和模态框实现代码
Mar 10 Javascript
jQuery模拟实现天猫购物车动画效果实例代码
May 25 jQuery
Vue数据绑定实例写法
Aug 06 Javascript
微信小程序使用wx.request请求服务器json数据并渲染到页面操作示例
Mar 30 #Javascript
微信公众平台获取access_token的方法步骤
Mar 29 #Javascript
vue路由--网站导航功能详解
Mar 29 #Javascript
利用weixin-java-miniapp生成小程序码并直接返回图片文件流的方法
Mar 29 #Javascript
微信小程序实现获取小程序码和二维码java接口开发
Mar 29 #Javascript
详解vue项目打包步骤
Mar 29 #Javascript
jQuery实现动态添加和删除input框代码实例
Mar 29 #jQuery
You might like
CodeIgniter php mvc框架 中国网站
2008/05/26 PHP
浅析PHP中Collection 类的设计
2013/06/21 PHP
eaglephp使用微信api接口开发微信框架
2014/01/09 PHP
ThinkPHP框架中使用Memcached缓存数据的方法
2018/03/31 PHP
PHP如何开启Opcache功能提升程序处理效率
2020/04/27 PHP
jquery中防刷IP流量软件影响统计的一点对策
2011/07/10 Javascript
Jquery判断$(&quot;#id&quot;)获取的对象是否存在的方法
2013/09/25 Javascript
提交按钮的name='submit'引起的js失效问题及原因
2015/02/25 Javascript
jQuery添加和删除输入文本框标签代码
2016/05/20 Javascript
webpack打包js的方法
2018/03/12 Javascript
jQuery中的$是什么意思及 $. 和 $().的区别
2018/04/20 jQuery
JS实现的哈夫曼编码示例【原始版与修改版】
2018/04/22 Javascript
详解JS函数stack size计算方法
2018/06/18 Javascript
redux处理异步action解决方案
2020/03/22 Javascript
JS数据类型分类及常用判断方法
2020/11/19 Javascript
vue常用高阶函数及综合实例
2021/02/25 Vue.js
[50:38]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第二场 3月7日
2021/03/11 DOTA
Python使用MySQLdb for Python操作数据库教程
2014/10/11 Python
Python的Flask框架中Flask-Admin库的简单入门指引
2015/04/07 Python
python开发利器之ulipad的使用实践
2017/03/16 Python
Python实现随机生成有效手机号码及身份证功能示例
2017/06/05 Python
Python获取当前函数名称方法实例分享
2018/01/18 Python
对Python通过pypyodbc访问Access数据库的方法详解
2018/10/27 Python
基于python traceback实现异常的获取与处理
2019/12/13 Python
python3连接MySQL8.0的两种方式
2020/02/17 Python
Python使用多进程运行含有任意个参数的函数
2020/05/02 Python
Python新手学习标准库模块命名
2020/05/29 Python
CSS3 Flexbox中flex-shrink属性的用法示例介绍
2013/12/30 HTML / CSS
纯CSS3实现鼠标悬停提示气泡效果
2014/02/28 HTML / CSS
HTML5不支持标签和新增标签详解
2016/06/27 HTML / CSS
桥梁与隧道工程专业本科生求职信
2013/10/08 职场文书
十周年庆典策划方案
2014/06/03 职场文书
2014年扫黄打非工作总结
2014/12/03 职场文书
十八大观后感
2015/06/12 职场文书
付款证明模板
2015/06/19 职场文书
Python实现学生管理系统(面向对象版)
2021/06/24 Python