你的位置:首页 > Java教程

[Java教程]js调用java代码返回解决方案


 

 今天封装一个加密标签,遇到一个问题,我需要对页面上的数据调用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 }

搞定。