javascript - 有没有一种方法可以在 springmvc 中的 ajax post 调用之后将我的页面(jsp)重定向到另一个页面(jsp)

标签 javascript jquery ajax jsp spring-mvc

基本上我的场景是我尝试使用 ajax post 将 3 个对象的列表作为字符串发送到我的 Controller ,如下所示。

用于 AJAX 调用的 JavaScript 函数:

$.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");  
    }
});

我的 Controller :

@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 格式,但该页面未呈现。有没有办法可以呈现评论页面?

最佳答案

您无法访问在 POST 请求响应中收到的页面。 但是您可以将成功添加到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';
}
});

您的 Controller 现在将如下所示:

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

但现在您还需要使用 GET 创建新 Controller 以返回 /content/review 页面的 View

p.s. 如果您仍然想在不更改任何 Controller 的情况下渲染页面,另一种变体似乎是一种 hack,那么您的成功一定是这样的:

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

但不推荐这种方法。

关于javascript - 有没有一种方法可以在 springmvc 中的 ajax post 调用之后将我的页面(jsp)重定向到另一个页面(jsp),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42542995/

相关文章:

javascript - 如何在 JavaScript 中交换两个变量

javascript - 带有 javascript 警报的 Django 按钮

jquery - $.animate 与 $.fadeIn 的平滑度

ajax - 使用浏览器缓存的增量更新

javascript - 工具提示中的 onclick 未触发

javascript - h3 标签的监听器不起作用

asp.net - 操作无法完成。无效的FORMATETC结构

javascript - 即使页面发生变化,在点击时也显示 AJAX 请求?

javascript - 查看错误消息: "#&lt;Location::ActiveRecord_Relation:0x007f8d79d3de30&gt;"

javascript - 为什么 oembed 不显示 youtube 视频?