利用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 相关文章推荐
jQuery之浮动窗口实现代码(两种方法)
Sep 08 Javascript
jquery浏览器滚动加载技术实现方案
Jun 03 Javascript
jQuery使用empty()方法删除元素及其所有子元素的方法
Mar 26 Javascript
Javascript复制实例详解
Jan 28 Javascript
jquery插件Jplayer使用方法简析
Apr 22 Javascript
JavaScript 事件对内存和性能的影响
Jan 22 Javascript
详解如何实现一个简单的Node.js脚手架
Dec 04 Javascript
使用vue-cli+webpack搭建vue开发环境的方法
Dec 22 Javascript
Vue项目安装插件并保存
Jan 28 Javascript
详解vue2.6插槽更新v-slot用法总结
Mar 09 Javascript
Vue之封装公用变量以及实现方式
Jul 31 Javascript
vue keep-alive的简单总结
Jan 25 Vue.js
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
我的论坛源代码(五)
2006/10/09 PHP
php经典算法集锦
2015/11/14 PHP
PHP使用OB缓存实现静态化功能示例
2019/03/23 PHP
jQuery 锚点跳转滚动条平滑滚动一句话代码
2010/04/30 Javascript
jQuery版Tab标签切换
2011/03/16 Javascript
这些年、我收集的JQuery代码小结
2012/08/01 Javascript
js/jquery获取浏览器窗口可视区域高度和宽度以及滚动条高度实现代码
2012/12/17 Javascript
当自定义数据属性为json格式字符串时jQuery的data api问题探讨
2013/02/18 Javascript
NodeJS学习笔记之Connect中间件应用实例
2015/01/27 NodeJs
JavaScript原生对象之Date对象的属性和方法详解
2015/03/13 Javascript
Javascript中使用parseInt函数需要注意的问题
2015/04/02 Javascript
jquery实现点击变换导航样式的方法
2015/08/31 Javascript
常见的javascript跨域通信方法
2015/12/31 Javascript
不定义JQuery插件 不要说会JQuery
2016/03/07 Javascript
js事件冒泡、事件捕获和阻止默认事件详解
2016/08/04 Javascript
JS中对Cookie的操作详解
2016/08/05 Javascript
浅谈jquery上下滑动的注意事项
2016/10/13 Javascript
JavaScript实现垂直滚动条效果
2017/01/18 Javascript
VUE实现日历组件功能
2017/03/13 Javascript
JS获取字符对应的ASCII码实例
2017/09/10 Javascript
浅谈Webpack自动化构建实践指南
2017/12/18 Javascript
浅谈react-router HashRouter和BrowserRouter的使用
2017/12/29 Javascript
vue视图不更新情况详解
2019/05/16 Javascript
vue-cli配置flexible过程详解
2019/07/04 Javascript
vue路由守卫,限制前端页面访问权限的例子
2019/11/11 Javascript
浅谈Vue3.0新版API之composition-api入坑指南
2020/04/30 Javascript
[28:57]EG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/16 DOTA
Python实现字典按照value进行排序的方法分析
2017/12/23 Python
浅谈Python NLP入门教程
2017/12/25 Python
浅谈利用缓存来优化HTML5 Canvas程序的性能
2015/05/12 HTML / CSS
英国护肤品购物网站:Beauty Expert
2016/08/19 全球购物
万得城电器土耳其网站:欧洲第一大电子产品零售商
2016/10/07 全球购物
英国领先的酒杯和水晶玻璃器皿制造商:Dartington Crystal
2019/06/23 全球购物
群众路线表态发言材料
2014/10/17 职场文书
煤矿百日安全活动总结
2015/05/07 职场文书
我国拿下天问一号火星着陆区附近 22 个地理实体命名:平乐、西柏坡、古田、漠河等
2022/04/29 数码科技