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:
});
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:
});