1很明显是客户端错误,于服务端无关。出现这个的问题在于,你想使用对象传参。
2.解决方案有二种:
1.ajax代码修改如下:
$.ajax({
type: 'POST',
contentType: 'text/javascript',
url: url + '?r=' + Math.random(),
data: JSON.stringify(datamodel),//这里要和后端对象属性对应
dataType: datatype ? datatype : 'json',
success: function (d) {
if (callbackSuccess != null) {
callbackSuccess(d);
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
callbackFailed(textStatus, XMLHttpRequest);
},
timeout: 30000
});
spring mvc配置文件:
<mvc:annotation-driven>
<mvc:message-converters register-defaults="false">
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
<bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
<bean class="org.springframework.http.converter.FormHttpMessageConverter"/>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<!-- *****自定义JSON返回类型***** -->
<value>text/javascript;charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
2.需要在pom.xml中加jackson依赖
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jettison</artifactId>
<version>2.32.2</version>
</dependency>
ContentType设置成application/json data:JSON.stringify()
修改ajax代码如下:
$.ajax({
type: 'POST',
// contentType: 'text/javascript',
contentType: 'application/json;charset=utf-8;',
url: url + '?r=' + Math.random(),
data: JSON.stringify(datamodel),
dataType: datatype ? datatype : 'json',
success: function (d) {
if (callbackSuccess != null) {
callbackSuccess(d);
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
callbackFailed(textStatus, XMLHttpRequest);
},
timeout: 30000
});