利用js实现前后台传送Json的示例代码


Posted in Javascript onMarch 29, 2018

无论使用什么框架都存在着从controller向Html页面或者jsp页面传递数据的问题,最常用的方式是传递Json字符串。以前对这块知识有些模糊,现在整理一下。

【Jquery基本方法】

实现传值常用的是Jquery以及内部封装的ajax。首先看一下jquery的get()和post()语法。get()方法是从服务器获得数据,其主要参数就是获得后台请求地址,以及负责处理的回调函数:

$.get(URL,callback);

$("button").click(function(){ 
 $.get("demo_test.php",function(data,status){ 
  alert("数据: " + data + "\n状态: " + status); 
 }); 
});

post通过HTTP post方法请求数据:

$.post(URL,data,callback);

$("button").click(function(){ 
  $.post("/try/ajax/demo_test_post.php", 
  { 
    name:"菜鸟教程", 
    url:"http://www.runoob.com" 
  }, 
    function(data,status){ 
    alert("数据: \n" + data + "\n状态: " + status); 
  }); 
});

【spring mvc框架+Jquery ajax】

spring mvc框架的controller通过标注方法向js返回Map<String,Object>类型参数。

@RequestMapping("update") 
@ResponseBody //此批注是ajax获取返回值使用 
public Map<String,Object> update(Long num,BigDecimal amount){ 
  map<string,Object> resultMap=new HashMap<string,Object>(); 
   
  if(num==null || agentId==null || amount==null){ 
    resultMap.put("result","参数不合法"); 
    return resultMap; 
  } 
  resultMap.put("result",result); 
   
}

jquery ajax获得返回值:

var params={}; 
params.num=num; 
params.id=id; 
params.amount=amount; 
$.ajax({ 
  async:false, 
  type:"post", 
  url:"uset/update", 
  data:params, 
  dataType:"json", 
  success:function(data){ 
    if(data.result=='success'){ 
      alert('修改成功'); 
    }else{ 
      alert('修改失败'); 
    } 
  }, 
  error:function(data){ 
    alert(data.result); 
  } 
   
})

如果在js中定义的参数与持久层定义的javabean保持一致,controller层同样可以接收实体。

【MUI绑定数据实例】

使用jquery很容易获得controller获得的json值,那我们如何操作json值,让其绑定到页面控件呢?首先我们简单理解一下json的结构:

var employees=[{"name":"Jon","age":12},{"name":"Tom","age":14}];

如上面定义的Json对象,{}表示对象,[]表示数组,"" 表示属性或值,: 表示后者是前者的值。

获得到json对象中的值:var name=employees[0].name;

修改:employees[0].name="LiMing";

MUI框架中的应用举例,实现list中添加li 标签:

mui.init();
var url="queryUser"
mui.ajax(url,{
	data:{
		'type':1,
		'limit':10
	},
	dataType:'json',
	type:'post',
	success:function(data){
		var songs=data.result.songs;
		var list=document.getElementById("list");
		var fragment=document.creeateDocumentFramgment();
		
		var li;
		mui.each(songs,function(index,item){
			var id=item.id,
			name=item.album.name,
			author=item.artists[0].name;
			
			li=document.createElement('li');
			li.className="mui-table-view-cell mui-media";
			li.innerHTML='<a class="mui-navigate-right" id='+ id +' data-audio='+ audio +'>'+'<img class="mui-media-object mui-pull-left" data-lazyload="'+picUrl+'">'+'<div class="mui-media-body">'+name+'<p class="mui-ellipsis">'+author+'</p>'+'</div>'+'</a>';
		fragment.appendChild(li);
		})
		
		list.appendChild(fragment);
		mui(document).imageLazyload({
			placeholder:'../img/60*60.gif';
		});
		
	},erro:function(xhr,type,errorThrown){
		console.log(type);
	}
	
});
//列表点击事件
mui("#list").on('tap','li a',function(){
	var id=this.getAttribute('id');
	var audio=this.getAttribute('data-audio');
	mui.openWindow({
		url:'music.html',
		id:'music.html',
		extras:{
			musicId:id,
			audioUrl:audio
		}
	});
});

【总结】

json格式的数据相对于xml文件来说,传输速度快且稳定,在前端设计中是一种非常不错的选择。

以上这篇利用js实现前后台传送Json的示例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
让iframe自适应高度(支持XHTML,支持FF)
Jul 24 Javascript
js 获取页面高度和宽度兼容 ie firefox chrome等
May 14 Javascript
javascript setinterval 的正确语法如何书写
Jun 17 Javascript
javascript原型链继承用法实例分析
Jan 28 Javascript
Javascript中的apply()方法浅析
Mar 15 Javascript
Eclipse编辑jsp、js文件时卡死现象的解决办法汇总
Feb 02 Javascript
详解Jquery 遍历数组之$().each方法与$.each()方法介绍
Jan 09 Javascript
JavaScript日期对象(Date)基本用法示例
Jan 18 Javascript
Kindeditor单独调用单图上传增加预览功能的实例
Jul 31 Javascript
原生js实现仿window10系统日历效果的实例
Oct 31 Javascript
详解Vue快速零配置的打包工具——parcel
Jan 16 Javascript
vuex如何重置所有state(可定制)
Jan 17 Javascript
vue中Npm run build 根据环境传递参数方法来打包不同域名
Mar 29 #Javascript
JS获取url参数,JS发送json格式的POST请求方法
Mar 29 #Javascript
spirngmvc js传递复杂json参数到controller的实例
Mar 29 #Javascript
Vue.js 表单控件操作小结
Mar 29 #Javascript
js传递数组参数到后台controller的方法
Mar 29 #Javascript
Vue.js实现可配置的登录表单代码详解
Mar 29 #Javascript
Vue项目中如何引入icon图标
Mar 28 #Javascript
You might like
ThinkPHP框架任意代码执行漏洞的利用及其修复方法
2014/07/04 PHP
smarty高级特性之过滤器的使用方法
2015/12/25 PHP
Yii多表联合查询操作详解
2016/06/02 PHP
PHP进阶学习之类的自动加载机制原理分析
2019/06/18 PHP
jquery $.ajax入门应用二
2008/11/19 Javascript
javascript实现获取cookie过期时间的变通方法
2014/08/14 Javascript
DOM节点的替换或修改函数replaceChild()用法实例
2015/01/12 Javascript
基于jquery实现页面滚动时顶部导航显示隐藏
2020/04/20 Javascript
如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)
2016/02/23 Javascript
jQuery事件绑定on()与弹窗实现代码
2016/04/28 Javascript
JavaScript6 let 新语法优势介绍
2016/07/15 Javascript
JS沙箱模式实例分析
2017/09/04 Javascript
JS实现手写parseInt的方法示例
2017/09/24 Javascript
细说webpack源码之compile流程-rules参数处理技巧(1)
2017/12/26 Javascript
vue+element实现批量删除功能的示例
2018/02/28 Javascript
详解webpack之图片引入-增强的file-loader:url-loader
2018/10/08 Javascript
使用Vue 实现滑动验证码功能
2019/06/27 Javascript
js实现上传图片并显示图片名称
2019/12/18 Javascript
[01:20]PWL开团时刻DAY9——听说潮汐没用?
2020/11/10 DOTA
在Django的URLconf中进行函数导入的方法
2015/07/18 Python
简单讲解Python中的闭包
2015/08/11 Python
python多进程实现进程间通信实例
2017/11/24 Python
用python与文件进行交互的方法
2018/03/01 Python
python如何为被装饰的函数保留元数据
2018/03/21 Python
python实现图片中文字分割效果
2019/07/22 Python
python修改字典键(key)的方法
2019/08/05 Python
Python 实现一个手机号码获取妹子名字的功能
2019/09/25 Python
Python偏函数Partial function使用方法实例详解
2020/06/17 Python
Foot Locker英国官网:美国知名运动产品零售商
2019/02/21 全球购物
如何利用cmp命令比较文件
2013/09/23 面试题
致400米运动员广播稿
2014/02/07 职场文书
大堂副理的岗位职责范文
2014/02/17 职场文书
幼儿园父亲节活动总结
2015/02/12 职场文书
2016年“12.4”法制宣传日活动总结
2016/04/01 职场文书
Python机器学习之基于Pytorch实现猫狗分类
2021/06/08 Python
Python经常使用的一些内置函数
2022/04/11 Python