版權聲明:本文為樓主原創文章,未經樓主允許不得轉載,如要轉載請注明來源。
今天封裝一個加密標簽,遇到一個問題,我需要對頁面上的數據調用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 }
搞定。
