解决 $.ajax 的回调函数值和 SpringMVC 返回 String 时冲突的问题
我们靠 ajax 发送请求, 给其 success:function(result){} 回调函数并根据返回的 result 进行下一步操作
- $.ajax({
- url: "${pageContext.request.contextPath}/items/batchDelete.action",
- type: 'POST',
- data: {
- "ids": ids
- },
- success: function(result) {
- if (result == 'success') {
- window.location.href = "${pageContext.request.contextPath}/items/toItemsList.action";
- }
- }
- });
后台代码如下:
因为 SpringMVC 返回 String 时候是进行页面跳转的, 如 return "success" 时, 在配置了前缀后缀的情况下, 页面会跳转到 localhost:8080/xxx/xxx/success.jsp, 这时就会因为找不到页面而报 404, 而且 ajax 接收到的 result 是整个 localhost:8080/xxx/xxx/success.jsp 的 html 对象
并且我们此时是 ajax 提交的请求, 仅仅想给 ajax 返回一个回调函数值, 根据这个返回值进行下一步操作
解决方法: 此时可以添加 @ResponseBody 注解即可返回给 ajax 给定的字符串, 而不是让 SpringMVC 以为返回的 String 是要进行页面跳转
- @RequestMapping("/batchDelete.action")@ResponseBody public String batchDelete(String ids) {
- String[] strs = ids.split(",");
- try {
- itemsService.batchDelete(strs);
- return "success";
- } catch(Exception e) {
- e.printStackTrace();
- }
- return "error";
- }
来源: http://www.2cto.com/kf/201707/652989.html