无论使用什么框架都存在着从 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.init();
- var url="queryUser"
- mui.Ajax(url,{
- data:{
- 'type':1,
- 'limit':10
- },// 欢迎加入全栈开发交流圈一起学习交流: 864305860
- 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
- }
- });
- });
来源: http://www.jianshu.com/p/c3796ad546fb