使用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 相关文章推荐
地址栏上的一段语句,改变页面的风格。(教程)
Apr 02 Javascript
jQeury淡入淡出需要注意的问题
Sep 08 Javascript
javascript学习笔记(七) js函数介绍
Jun 19 Javascript
Javascript中克隆一个数组的实现代码
Dec 06 Javascript
JS本地刷新返回上一页代码
Jul 25 Javascript
轮播的简单实现方法
Jul 28 Javascript
使用重写url机制实现验证码换一张功能
Aug 01 Javascript
ionic3 懒加载
Aug 16 Javascript
webpack多页面开发实践
Dec 18 Javascript
详解VueJs中的V-bind指令
May 03 Javascript
vue2.0基于vue-cli+element-ui制作树形treeTable
Apr 30 Javascript
vue中 this.$set的使用详解
Nov 17 Vue.js
微信小程序使用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
php实现utf-8和GB2312编码相互转换函数代码
2013/02/07 PHP
PHP Class&amp;Object -- PHP 自排序二叉树的深入解析
2013/06/25 PHP
php ci框架中加载css和js文件失败的解决方法
2014/03/03 PHP
PHP在弹框中获取foreach中遍历的id值并传递给地址栏
2017/06/13 PHP
php使用curl_init()和curl_multi_init()多线程的速度比较详解
2018/08/15 PHP
laravel 解决多库下的DB::transaction()事务失效问题
2019/10/21 PHP
Laravel框架源码解析之模型Model原理与用法解析
2020/05/14 PHP
javascript同步Import,同步调用外部js的方法
2008/07/08 Javascript
js 判断上传文件大小及格式代码
2013/11/13 Javascript
jquery获得option的值和对option进行操作
2013/12/13 Javascript
JSON.parse()和JSON.stringify()使用介绍
2014/06/20 Javascript
js中各种类型的变量在if条件中是true还是false
2014/07/16 Javascript
浅谈利用JavaScript进行的DDoS攻击原理与防御
2015/06/04 Javascript
Laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的解决方法
2016/08/18 Javascript
JavaScript重定向URL参数的两种方法小结
2016/10/19 Javascript
jQuery选择器实例应用
2017/01/05 Javascript
详解打造 Vue.js 可复用组件
2017/03/24 Javascript
jQuery实现简单的滑动导航代码(移动端)
2017/05/22 jQuery
JavaScript深入V8引擎以及编写优化代码的5个技巧
2019/06/24 Javascript
原生js实现下拉选项卡
2019/11/27 Javascript
[56:46]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 VP vs Effect
2018/04/01 DOTA
python实现将元祖转换成数组的方法
2015/05/04 Python
Python中类型关系和继承关系实例详解
2015/05/25 Python
深入解析Python中的集合类型操作符
2015/08/19 Python
TensorFlow打印tensor值的实现方法
2018/07/27 Python
Python远程视频监控程序的实例代码
2019/05/05 Python
set在python里的含义和用法
2019/06/24 Python
利用python画出AUC曲线的实例
2020/02/28 Python
python爬虫构建代理ip池抓取数据库的示例代码
2020/09/22 Python
css3的图形3d翻转效果应用示例
2014/04/08 HTML / CSS
HTML5自定义属性的问题分析
2019/08/16 HTML / CSS
欧洲最大的婴幼儿服装及内衣公司:Petit Bateau(小帆船)
2016/08/16 全球购物
介绍一下gcc特性
2015/10/31 面试题
中学生自我评价范文
2014/02/08 职场文书
小学体育队列队形教学反思
2016/02/16 职场文书
小米11和iphone12哪个值得买?小米11对比iphone12评测
2021/04/21 数码科技