美文网首页程序员让前端飞
手把手教你使用Js实现前后台传送Json

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

作者: a333661d6d6e | 来源:发表于2018-11-28 19:51 被阅读5次

    无论使用什么框架都存在着从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,快速升职加薪,走上人生巅峰。

    相关文章

      网友评论

        本文标题:手把手教你使用Js实现前后台传送Json

        本文链接:https://www.haomeiwen.com/subject/dhtiqqtx.html