基本上我的场景是我尝试使用 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/