代码之家  ›  专栏  ›  技术社区  ›  PSing

将Json提交给Spring MVC控制器,并将jsp作为ajax响应字符串返回

  •  0
  • PSing  · 技术社区  · 7 年前

    我正在创建Spring mvc应用程序。我正在通过AJAX向controller提交JSON字符串。我想要的是将页面重定向到不同的JSP页面。

    现在,我正在从controller返回视图,但它不是重定向,而是返回对之前AJAX请求的响应。

    弹簧控制器

    @RequestMapping("/hello")
    public String hello() {
        return "powerseries";
    }
    

    Javascript/Ajax

    $(document).ready(function(){   
            $('#getData').click(function(){
                var aa=JSON.stringify(answer);
                $.ajax({
        type: "POST",
        url: "hello",
        contentType: "application/json",
        dataType:'json',
        data:aa,
        cache: false,
        processData:false,
        success: function(status){
            console.log("Entered",status);
        },
        error:function(error){
            console.log("error",error);
        }
    });
            });  
    });  
    console.dir(answer);
    

    浏览器控制台

    Browser Console showing ajax response having jsp page

    2 回复  |  直到 7 年前
        1
  •  1
  •   shawn    7 年前

    当您使用AJAX时,MVC应该返回一个特殊的JSON响应。

    如:

    @RequestMapping("/hello")
    @ResponseBody
    public Map hello() {
        m.put('my_redirect', 'the new url');
        return m;
    }
    

    然后在AJAX的处理程序中处理此响应。使用javascript window.location.href = resp.my_redirect; 转到新url。

        2
  •  0
  •   404 Not Found    7 年前

    如果要重定向到其他jsp页面,请使用 redirect 内部控制器方法。

    @RequestMapping("/hello")
     public String hello() {
       // return "powerseries";
       return "redirect:powerseries";
    }
    
    // Add method to controller .
    @RequestMapping("/powerseries")
     public String returnPowerseries() {
      return "powerseries";
    }
    

    或者只是使用 $("html").html(response); 如果要完全更改文档html。