springmvc与ajax交互常见问题

这是我个人再编写博客系统的时候,因个人疏忽犯下的低级错误。

不过犯错是一件好事,有助于总结。

1.关于参数前加@RequestBody

如果是使用ajax交互时,必须要加上这个contentType: ‘application/json;charset=utf-8‘

否则会出现这个异常:

错误信息:org.springframework.web.HttpMediaTypeNotSupportedException: Content type ‘application/x-www-form-urlencoded;charset=UTF-8‘ not supported

不支持这种类型传递,是因为没有在前台进行定义,说明传递的内容必须为json。有些时候特别后台以@RequestBody作为传参时,必须在ajax中加上contentType: ‘application/json;charset=utf-8‘,加上这个意味着你已经将传递的对象定义为json类型,@RequestBody也仅仅支持json类型。所以就很容易理解这个错误的发生原因。特别是我们开发者大军们,其中不乏有这样的人,对于从来没遇到的错误,复制粘贴到百度去搜索,通常前人们遇到过,通过博客的形式记录下来错误信息及其如何解决,及其为什么会发生。但是我们有些朋友只看如何解决,至于为什么会发生从来就不管。

错误信息:org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unrecognized token ‘email‘: was expecting (‘true‘, ‘false‘ or ‘null‘); nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token ‘email‘: was expecting (‘true‘, ‘false‘ or ‘null‘)

这个错误是因为你定义的json对象参数没有写全导致,同时导致这种错误还有就是对于后台以@RequestBody接收参数,必须在ajax中的data对应值中写上JSON.stringify

示例:

这样写就是对的,就不会发生上述的错误

$.ajax({
                url:"/blog-web/user/register",
                type:"POST",
                contentType: ‘application/json;charset=utf-8‘,
                data : JSON.stringify(data),
                dataType : ‘json‘,
                success:function(data){

                if(data.returnCode=="333333"){
                    layui.use(‘layer‘, function(){
                        var layer = layui.layer;

                        layer.alert(data.returnMsg, {icon: 5});
                  });  

                }else if(data.returnCode=="222222"){

                    layui.use(‘layer‘, function(){
                          var layer = layui.layer;

                          layer.alert(data.returnMsg, {icon: 5});
                    });                 

                }else if(data.returnCode=="111111"){
                    layui.use(‘layer‘, function(){
                        var layer = layui.layer;

                        layer.alert(data.returnMsg, {icon: 5});
                  });
                }else if(data.returnCode=="000000"){

                    layui.use(‘layer‘, function(){
                           var layer = layui.layer;

                           layer.alert("请稍后,马上进入"+data.returnMsg,{icon: 1});

                     });
                     setTimeout(() => {
                        view();
                    }, 10000);

                }

                },error:function(){
                    layui.use(‘layer‘, function(){
                        var layer = layui.layer;

                        layer.alert("有异常,请和管理员联系");

                  });
                }
            });

原文地址:https://www.cnblogs.com/youcong/p/9152813.html

时间: 06-08

springmvc与ajax交互常见问题的相关文章

springmvc与ajax交互

Jsp页面: 需要引入jquery-1.10.2.min.js.json2.js.jquery.json-2.3.js三个文件 <%@ page contentType="text/html; charset=utf-8" language="java" errorPage=""%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/co

关于SpringMvc的ajax请求的问题

利用springmvc接收前台ajax传过来的数据完成注册功能. 为了方便把,前台js的model和后台的user写成一致的功能.代码如下 前端: var User = function() { var id = null; var name = null; var password = null; var sex = null; var telephone = null; var role = null; var regist_time = null; var email_address =

SpringMVC实现AJax以及RestFull分格

1.需要在web.xml中开启put,和delete的支持 <!-- 浏览器不支持put,delete等method,由该filter将/xxx?_method=delete转换为标准的http delete方法 --> <filter> <filter-name>hiddenHttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttp

SpringMVC经典系列-13使用SpringMVC处理Ajax请求---【LinusZhu】

注意:此文章是个人原创,希望有转载需要的朋友们标明文章出处,如果各位朋友们觉得写的还好,就给个赞哈,你的鼓励是我创作的最大动力,LinusZhu在此表示十分感谢,当然文章中如有纰漏,请联系[email protected],敬请朋友们斧正,谢谢. 这一部分主要讲解SpringMVC如何处理Ajax请求,是首先要讲解一下jackson类库,可以帮助我们在java对象和json.xml数据之间的互相转换.他可以将控制器返回的对象直接转换成json数据,供客户端使用,客户端也可以传送json数据到服务

ajax交互servlet返回数据和jdbc模糊查询-中文-已经设置了UTF-8和解决了乱码

1.编码是将字符按一定翻译方式转换成字节存储在内存或外存中,解码是按照一定翻译方式将存储中的字节转换成字符. 2.ASCII是单字节,最高位总为0,相当于只占用了一个字节的7位,2^7=128个字符,相当于键盘上的128个键,有大小写因为字母,有*,%¥#@!+....等这些可显示字符,也有不可以显示的控制符F1,ctr... 而ISO-8859-1是启用了ASCII码的最高位,理论上是能再多128位,实际上没用掉这么多,至于多了那些,你们自己查下表 UTF-8是可变长的,具体中文几个字节,怎么

springmvc实现ajax的问题

使用springmvc实现ajax,遇到很多问题,记录几个比较常见的: 1:没有在Controller类中,对应的ajax方法上添加@ResponseBody,这个必须添加,否则返回值到不了页面上,js获取一直为null: 2:Controller类中,返回的值,不能是JSONObject,这个我网上看资料,好像是springmvc不支持的原因,用struts2是可以的,为了保险,返回json格式的String即可: 3:关于页面获取到ajax返回值之后,处理方式可以如下: $.post(url

SpringMVC的AJAX请求报406错误

SpringMVC的AJAX请求报406错误原因有两种:1.jackson包没有引入 2.如果已经引入jackson包了还报406的错误,那么就有可能是请求的url路径是.html结尾,但是返回的数据是一个对象,这时浏览器就不知道怎么响应了,因为一般请求.html后缀的页面,返回的一般是个字符串或者页面内容,此时可以在web.xml中再配置一个拦截后缀,如*.action,web.xml可以有多个拦截后缀,请求.action的后缀,浏览器就没有这个限制了

SpringMVC—对Ajax的处理(含 JSON 类型)(3)

五.服务器端的 SpringMVC 如何返回 JSON 类型的字符串. 请求: $("#testJson8").click(function () {    $.ajax({        url: "testReturnJsonValue",        type: "post",        success: function (result) {            console.log(result);        }    }

springMVC+jsp+ajax上传文件

工作中遇到的小问题,做个笔记 实现springMVC + jsp + ajax 上传文件 HTML <body> <form id="myform" method="post" > 登录名<input type="text" name="loginName" /> <br> 上传录音<input type="file" name="record