版权声明:本文为楼主原创文章,未经楼主允许不得转载,如要转载请注明来源。
今天封装一个加密标签,遇到一个问题,我需要对页面上的数据调用java后台代码进行解密,而标签里只能通过js获取到数据,所以就遇到了js掉用java代码进行结果返回问题。
试了好多方法,现实证明js里是调不通java代码的。(它们的执行机制和时机是不同的,具体可以自行百度)我的解决办法就是通过ajax解决。首先在js里接收需要处理的数据,然后调用ajax,通过ajax后台对数据进行处理返回,然后在将结果供前台使用,搞定。前端js如下
1 function decrypt(value){ 2 $.ajax({ 3 type: "post", 4 url: "", 5 data: {"value":value}, 6 dataType:"json", 7 async : false,//必须使用同步方法,或者success里面重新封装方法 8 success: function(msg){ 9 value=msg.msg; 10 } 11 }); 12 13 return value; 14 }
注意这里async必须设置成false,不然value值是不会改变的。
后端代码:
1 @RequestMapping(params = "decrypt",method = RequestMethod.POST) 2 @ResponseBody 3 public AjaxJson decrypt(HttpServletRequest request) { 4 String value = request.getParameter("value"); 5 AjaxJson j = new AjaxJson(); 6 String msg=""; 7 try{ 8 //对value进行业务逻辑处理
msg = value; 9 }catch(Exception e){ 10 e.printStackTrace(); 11 } 12 13 j.setMsg(msg); 14 return j; 15 }
搞定。