解决 ajax报错406,springMVC报错406,页面报错406解决办法
2017-12-23 22:49
417 查看
**
一、问题描述
1、使用 ajax请求一个带 .html 后缀的url,报错406,直接在页面访问也是报错406。
2、可以进到对应Controller方法,方法正常执行,方法执行完毕后,无对应数据返回
相关错误截图如下:
二、相关代码
1、 ajax 请求的代码
2、后台 controller 接收代码
三、简单的代码分析
从ajax 请求url和后台接收url,可以有以下3点理解:
a. url中需要一个绑定参数
b. 该方法的返回值为 json ( @ResponseBody )
c. 该url 并不是请求一个真正的 html页面,而是一个伪装的 html
四、问题解决
1、 简单项目背景: spring 全家桶, 4.0 以上版本
2、 在springmvc.xml 中,已经配置了 jackson 相关的jar包 (若未配置 jackson也会导致406报错,配置方法可参考这篇文章: http://blog.csdn.net/random0708/article/details/52087676)
3、通过分析 Response Headers 可以发现,springmvc 响应的是一个 html ,而实际返回值为 json数据,这是导致406错误的原因所在了。
4、解决办法:
a. 若springmvc未设置拦截 *.html 的请求, 直接在 url 后面去掉 .html 即可解决问题。
b. 若springmvc设置了拦截 .html 的请求,可在 web.xml中增加新的过滤拦截。 如: .action (一个servlet 可以设置多个 servlet-mapping)
五、总结
1、在springmvc开发中,遇到需要返回json数据的,请勿使用 .html 的后缀。 我的理解是 springmvc 在接收到 .html 的后缀,会认为需要返回一个 html 页面,而实际返回的是 json数据,就会导致报错406。 (若有全面的理解,请留言告知,谢谢)
参考资料: http://blog.csdn.net/random0708/article/details/52087676
https://www.cnblogs.com/zihuwuyu/p/5189534.html
解决 ajax报错406,springMVC报错406,页面报错406解决办法
**一、问题描述
1、使用 ajax请求一个带 .html 后缀的url,报错406,直接在页面访问也是报错406。
2、可以进到对应Controller方法,方法正常执行,方法执行完毕后,无对应数据返回
相关错误截图如下:
二、相关代码
1、 ajax 请求的代码
$("#btn_ajax").click(function(){ $.ajax({ url:"${pageContext.request.contextPath}/rankController/provinceJson_2.html", type:"post", data:{"name":"ajax 请求测试"}, dataType:"json", success:function(data){ alert("请求成功: data-->"+JSON.stringify(data)); }, }); });
2、后台 controller 接收代码
@RequestMapping(value="/provinceJson_{type}.html") @ResponseBody public List<Area> provinceJsonHtml(@PathVariable String type,Model model){ List<Area> provinceList = areaService.getAreaListByType(type); model.addAttribute("provinceList", provinceList); return provinceList; }
三、简单的代码分析
从ajax 请求url和后台接收url,可以有以下3点理解:
a. url中需要一个绑定参数
b. 该方法的返回值为 json ( @ResponseBody )
c. 该url 并不是请求一个真正的 html页面,而是一个伪装的 html
四、问题解决
1、 简单项目背景: spring 全家桶, 4.0 以上版本
2、 在springmvc.xml 中,已经配置了 jackson 相关的jar包 (若未配置 jackson也会导致406报错,配置方法可参考这篇文章: http://blog.csdn.net/random0708/article/details/52087676)
3、通过分析 Response Headers 可以发现,springmvc 响应的是一个 html ,而实际返回值为 json数据,这是导致406错误的原因所在了。
4、解决办法:
a. 若springmvc未设置拦截 *.html 的请求, 直接在 url 后面去掉 .html 即可解决问题。
b. 若springmvc设置了拦截 .html 的请求,可在 web.xml中增加新的过滤拦截。 如: .action (一个servlet 可以设置多个 servlet-mapping)
<servlet-mapping> <servlet-name>springServlet</servlet-name> <url-pattern>*.action</url-pattern> </servlet-mapping>
五、总结
1、在springmvc开发中,遇到需要返回json数据的,请勿使用 .html 的后缀。 我的理解是 springmvc 在接收到 .html 的后缀,会认为需要返回一个 html 页面,而实际返回的是 json数据,就会导致报错406。 (若有全面的理解,请留言告知,谢谢)
参考资料: http://blog.csdn.net/random0708/article/details/52087676
https://www.cnblogs.com/zihuwuyu/p/5189534.html
相关文章推荐
- SpringMVC ajax 请求报错:406 Not Acceptable 的解决办法 使用@ResponseBody注解
- SpringMVC ajax传递json数组到后台报406错误的解决办法
- Ajax Post提交事例及SpringMVC注解@RequestMapping取不到参数值解决办法
- AjaxPro.2.dll使用中出现页面未定义错误的解决办法
- 刷新页面时无法自动执行AJAX请求的解决办法
- springmvc 发送ajax中文乱码的几种解决办法
- SpringMVC出现406错误的解决办法
- 页面使用Ajax控件,后台不能调用前台Javascript脚本弹出消息框的解决办法
- 记录一下解决SpringMVC 3.x升级到SpringMVC 4.x之后ajax返回406的问题
- AJAX页面参数相同时只返回缓存的内容的解决办法
- asp.net mvc Ajax.BeginForm不能异步刷新,或转到新页面,或页面还是刷新了,的原因(或解决办法)
- SpringMVC异常报406 (Not Acceptable)的解决办法
- SpringMVC异常报406 (Not Acceptable)的解决办法
- SpringMVC异常报406 (Not Acceptable)的解决办法
- SpringMVC异常报406 (Not Acceptable)的解决办法
- SpringMVC异常报406 (Not Acceptable)的解决办法
- Ajax页面缓存问题分析与解决办法
- 关于如何控制一个页面的Ajax读数据只读一次的简单解决办法!
- 关于ajax页面里的js方法无法使用的解决办法
- springmvc 发送ajax中文乱码的几种解决办法