在jsp页面利用ajax传json值到springboot中,并完成页面跳转

2 篇文章 0 订阅

碰到的问题:

1,在JSP页面中里面ajax传json值到后台

2,后台收到ajax的值后,根据收到的值做相应的处理后把值传到页面,并完成页面的跳转


之前一直测试不成功,为了排除干扰因为,先用最简单的数据来

 <script  type="text/javascript" src="./js/jquery.min.js" ></script>
    <script  type="text/javascript" src="./js/jquery.json.min.js" ></script>
    <script  type="text/javascript" >
    
        function submitUserList_3() {
        alert("ok");
var params = {};
params.name = "ming123";
params.pwd = "zaq1123";
$.ajax({
type:"post",
//async:false,//不需要
url:"ajax",//次行正确
//data:"name="+name+"&pwd="+pwd,//次行正确,可以把值传到后台
//data:{"name":name , "pwd":pwd},//次行正确,可以把值传到后台
data:params,
success:function(data)
{
alert(data);
window.location.href="${pageContext.request.contextPath}/views/ajax.jsp" ;
//window.location.href="ajax";//这个要配合后台的 可以进行页面跳转,可是后台传递过来的在msg中显示,可是页面无法显示
},
err:function(data)
{
alert("出现异常,异常原因【"+data+"】");
},
complete:function(data)
{
var str=data.responseText
alert("complete【"+str+"】");
}
});
            
        }
    </script>
</head>
<body>
    <h1>submitUserList_3</h1>
    <input id="submit" type="button" value="Submit" οnclick="submitUserList_3();">
</body>

</html>

后台 @RequestMapping(value="/ajax" , method=RequestMethod.POST )
@ResponseBody
public String  getAjax(User user)
{
 ModelMap model = new ModelMap();  
                 String name = user.getName();
 String pwd = user.getPwd();
          model.addAttribute("courtName",name);  
          model.addAttribute("courPwd",pwd);  
         return new ModelAndView("ajax",model);

   } 

以上后台可以收到前端发送来的数据,但是在后台运行完后跳入到前端ajax的success函数中去时,后台的数据成功传入

success中的参数data,可是在页面跳转到ajax.jsp页面后,里面的request..getAttribute("courtName") =null

现在传入页面JSON传的前后端代码

<script  type="text/javascript" src="./js/jquery.min.js" ></script>

 <script  type="text/javascript"src="./js/jquery.json.min.js" ></script>

 <script  type="text/javascript">

   function submitUserList_3() {

      alert("ok");

        var customerArray = new Array();

        customerArray.push({name: "李四", pwd: "123"});

        customerArray.push({ name: "张三", pwd: "332"});

       

//因为引用的jquery.json2.4版本,故用函数$.toJSONcustomerArray转换//json的字符串

        var strjson = $.toJSON(customerArray);

        alert(strjson);

        $.ajax({

           type:"post",

           //async:false,//不需要

           url:"ajax",//次行正确  根据web.xmlspring里面的路径配置

            data:strjson,

           datatype:"json",//datatype 注意大小写

           contentType: "application/json;charset=utf-8",//此处不能省略

           success:function(data)

           {

               alert("succes");

//当上面的内容传到后台并成功后进入里面的函数

               alert(data);

window.location.href="${pageContext.request.contextPath}/views/ajax.jsp" ;

               //window.location.href="ajax";//不知道着根据配置着不能完成跳转

           },

           err:function(data)

           {

               alert("出现异常,异常原因【"+data+"");

           },

           complete:function(data)

           {

               //var str=data.responseText

               //alert("complete"+str+"");

           }

        });

        }

    </script>

后端代码

@RequestMapping(value="/ajax" , method=RequestMethod.POST )

@ResponseBody//次行不可以省略,不然ajax收不到后台传来的值  下面的@RequestBody不要忘记,不然收不到ajax传来的数据

publicvoid  getAjax(@RequestBody String myDomain , HttpServletRequest request) throws IOException

     {

         ObjectMapper objectMapper = new ObjectMapper(); 

         JavaType javaType = objectMapper.getTypeFactory().constructParametricType(List.class, User.class); 

        List<User> list = objectMapper.readValue(myDomain, javaType); 

        

         for(inti = 0; i < list.size() ; i++)

         {

         User user = list.get(i);

         String name = user.getName();

            String pwd = user.getPwd();

            System.out.println("进入控制器name="+name);

            System.out.println("进入控制器pwd="+pwd);

         }

         objectMapper.writeValue(System.out, list);

         //中间红色的不要后,ajax可以收到后台传来的值,可是页面跳转不显示,

         //加上中间的红色后,上面@ResponseBody可以不要,同时ajax可以收到后台传来的值,可是页面内容可以显示,

         request.getSession().setAttribute("courtName",myDomain);

}

ajax.jsp页面中不要忘记红色部分,不然页面跳转时null

<%=request.getSession().getAttribute("courtName")%>




可以使用以下步骤来实现ajax提交数据到后台并跳转到新的jsp页面,同时携带多个参数: 1. 在前端页面使用ajax提交数据到后台jsp页面,例如: ``` $.ajax({ type: "POST", url: "backend.jsp", data: { name: "John", age: 30 }, success: function(response) { // 成功提交后的操作 var result = JSON.parse(response); // 将后台返回的json字符串转换为对象 var id = result.id; var status = result.status; window.location.href = "newPage.jsp?id=" + id + "&status=" + status; // 跳转到新的jsp页面并携带参数 }, error: function() { // 提交失败后的操作 window.location.href = "error.jsp"; // 跳转到错误页面 } }); ``` 2. 在后台jsp页面获取前端提交的数据,并根据需要进行处理,例如: ``` String name = request.getParameter("name"); int age = Integer.parseInt(request.getParameter("age")); // 进行数据处理 ... int id = 123; String status = "success"; JSONObject json = new JSONObject(); // 创建json对象 json.put("id", id); // 添加属性值 json.put("status", status); response.getWriter().write(json.toJSONString()); // 将json对象转换为字符串并返回给前端页面 ``` 3. 在新的jsp页面获取携带的参数并使用,例如: ``` <% int id = Integer.parseInt(request.getParameter("id")); String status = request.getParameter("status"); // 使用参数进行页面展示或其他操作 %> ``` 注意事项: - 在前端页面使用ajax提交数据时,要注意设置请求类型和提交的数据格式。 - 在后台jsp页面获取提交的参数时,要注意参数的名称和类型。 - 在后台jsp页面返回数据时,可以使用json格式,便于前端页面处理。 - 在新的jsp页面获取携带的参数时,要注意参数的名称和类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值