使用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 相关文章推荐
jQuery 全选效果实现代码
Mar 23 Javascript
ExtJS PropertyGrid中使用Combobox选择值问题
Jun 13 Javascript
javascript中的delete使用详解
Apr 11 Javascript
jQuery 获取、设置HTML或TEXT内容的两种方法
May 23 Javascript
基于 Node.js 实现前后端分离
Apr 23 Javascript
Bootstrap 过渡效果Transition 模态框(Modal)
Mar 17 Javascript
jQuery ajax请求struts action实现异步刷新
Apr 19 jQuery
详解vue嵌套路由-params传递参数
May 23 Javascript
微信小程序实现图片上传功能实例(前端+PHP后端)
Jan 10 Javascript
详解.vue文件解析的实现
Jun 11 Javascript
vue2.0 实现富文本编辑器功能
May 26 Javascript
JavaScript获取某一天所在的星期
Sep 05 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
Windows下PHP的任意文件执行漏洞
2006/10/09 PHP
rrmdir php中递归删除目录及目录下的文件
2011/05/15 PHP
PHP递归调用的小技巧讲解
2013/02/19 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十五)
2014/06/30 PHP
php实现多维数组中每个单元值(数字)翻倍的方法
2015/02/16 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
2017/08/31 PHP
laravel5.0在linux下解决.htaccess无效和去除index.php的问题
2019/10/16 PHP
ASP.NET jQuery 实例9  通过控件hyperlink实现返回顶部效果
2012/02/03 Javascript
DIV+CSS+JS不间断横向滚动实现代码
2013/03/19 Javascript
jQuery 获取、设置HTML或TEXT内容的两种方法
2014/05/23 Javascript
jQuery Ajax使用实例
2015/04/16 Javascript
基于JavaScript如何实现ajax调用后台定义的方法
2015/12/29 Javascript
Javascript 6里的4个新语法
2016/08/25 Javascript
Bootstrap基本样式学习笔记之表格(2)
2016/12/07 Javascript
简单实现JS计算器功能
2016/12/21 Javascript
Javascript自定义事件详解
2017/01/13 Javascript
JQuery 进入页面默认给已赋值的复选框打钩
2017/03/23 jQuery
BootStrap下的弹出框加载select2框架失败的解决方法
2017/08/31 Javascript
Angular中点击li标签实现更改颜色的核心代码
2017/12/08 Javascript
vue中动态绑定表单元素的属性方法
2018/02/23 Javascript
JavaScript使用math.js进行精确计算操作示例
2018/06/19 Javascript
2019 年编写现代 JavaScript 代码的5个小技巧(小结)
2019/01/15 Javascript
js实现简单五子棋游戏
2020/05/28 Javascript
Django中对数据查询结果进行排序的方法
2015/07/17 Python
Python输出汉字字库及将文字转换为图片的方法
2016/06/04 Python
浅谈Python中range和xrange的区别
2017/12/20 Python
pandas对指定列进行填充的方法
2018/04/11 Python
Windows下python3.6.4安装教程
2018/07/31 Python
Python使用matplotlib绘制随机漫步图
2018/08/27 Python
Django如何简单快速实现PUT、DELETE方法
2019/07/24 Python
Python join()函数原理及使用方法
2020/11/14 Python
美国畅销的跑步机品牌:ProForm
2017/02/06 全球购物
京东奢侈品:全球奢侈品牌
2018/03/17 全球购物
瑞士图书网站:Weltbild.ch
2019/09/17 全球购物
催款函范本大全
2015/06/24 职场文书
Android基础入门之dataBinding的简单使用教程
2022/06/21 Java/Android