有没有办法,我可以一个AJAX调用后用SpringMVC中重定向后,我的网页(JSP)到另一个页面(

2019-09-26 13:29发布

基本上我的情况是我想用AJAX后,如下图所示送3个对象为字符串到我的控制器的列表。

JavaScript函数的AJAX调用:

$.ajax({
    type: 'POST',
    dataType: 'json',
    url: "ajaxEditFormUpdate",
    data: JSON.stringify(newData),
    beforeSend: function(xhr) { 
        xhr.setRequestHeader("Accept", "application/json");  
        xhr.setRequestHeader("Content-Type", "application/json");  
    }
});

myController的:

@RequestMapping(value = "ajaxEditFormUpdate", method = RequestMethod.POST)
    @ResponseBody
    public ModelAndView handleResponse(@RequestBody String records) {
        System.out.println(records);
        String viewName = "content/review";
        ModelAndView mav = new ModelAndView();
        mav.setViewName(viewName);
        return mav;
    }

在这里,我想我的网页被重定向到审核(JSP)页,但什么在我的情况下发生的是它仍然保留在同一个页面,但在网络(在Chrome开发工具)的响应部分,我可以看到我的JSP页面在HTML格式,但网页没有被渲染。 有没有办法,我可以呈现在浏览页面的方法吗?

Answer 1:

你不能去,你在响应POST请求recived的页面。 但是,你可以添加成功 AJAX:

$.ajax({
type: 'POST',
dataType: 'json',
url: "ajaxEditFormUpdate",
data: JSON.stringify(newData),
beforeSend: function(xhr) { 
    xhr.setRequestHeader("Accept", "application/json");  
    xhr.setRequestHeader("Content-Type", "application/json");  
},
success: function (response) {
    window.location.href = '/content/review';
}
});

现在,控制器将寻找这样的:

@RequestMapping(value = "ajaxEditFormUpdate", method = RequestMethod.POST)
@ResponseBody
    public ResponseEntity<Void> handleResponse(@RequestBody String records) {
        System.out.println(records);
        return new ResponseEntity<>(HttpStatus.OK);
    }

但是现在你也需要做出新的控制器机会到返回查看/content/review

ps的另一个变种似乎是一个黑客,如果你仍然想渲染页面不改变任何控制器,你的成功一定会是这样的:

success: function (response) {
        document.open();
        document.write(response);
        document.close();
    }

但不推荐这种方法。



文章来源: Is there a way that I can redirect my page (jsp) to another page (jsp) after an ajax post call in springmvc