程序员让前端飞

手把手教你使用Js实现前后台传送Json

2018-11-28  本文已影响5人  a333661d6d6e

无论使用什么框架都存在着从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); 
  }); 
});//欢迎加入全栈开发交流圈一起学习交流:864305860

【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; 
  } //欢迎加入全栈开发交流圈一起学习交流:864305860
  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('修改失败'); 
    } //欢迎加入全栈开发交流圈一起学习交流:864305860
  }, //帮助突破技术瓶颈,提升思维能力
  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
    },//欢迎加入全栈开发交流圈一起学习交流: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);
        }) //欢迎加入全栈开发交流圈一起学习交流:864305860
        list.appendChild(fragment);
        mui(document).imageLazyload({
            placeholder:'../img/60*60.gif';
        });
           },erro:function(xhr,type,errorThrown){
        console.log(type);
    }//欢迎加入全栈开发交流圈一起学习交流:864305860
     });
//列表点击事件
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
        }//欢迎加入全栈开发交流圈一起学习交流:864305860
    });//面向1-3年前端人员
});//帮助突破技术瓶颈,提升思维能力

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

感谢您的观看,如有不足之处,欢迎批评指正。

本次给大家推荐一个免费的学习群,里面概括移动应用网站开发,css,html,webpack,vue node angular以及面试资源等。
对web开发技术感兴趣的同学,欢迎加入Q群:864305860,不管你是小白还是大牛我都欢迎,还有大牛整理的一套高效率学习路线和教程与您免费分享,同时每天更新视频资料。
最后,祝大家早日学有所成,拿到满意offer,快速升职加薪,走上人生巅峰。

上一篇下一篇

猜你喜欢

热点阅读