解決SpringMVC接收不到ajaxPOST參數(shù)的問題
問題
今天遇到一個問題,代碼如下
java:
@PostMapping(value = "/method")
@ResponseBody
public Object method(Integer id,String audit_content) {
return null;
}
js:
var data = {id:7,audit_content:"11111111111111111111a1"};
$.ajax({
type: "POST",
url: "/method",
data:data,
contentType: "application/json;charset=utf-8",
success: function (result) {
$("#my_result").html(JSON.stringify(result));
},
error: function () {
console.log("shibai")
}
});
這樣的話,java后臺的id和audit_content永遠(yuǎn)都是null;就算用HttpServletRequest的getParameter("id")也一樣沒用。
解決
原因是js代碼里的contentType: "application/json;charset=utf-8",刪掉或者改成默認(rèn)的"contentType: application/x-www-form-urlencoded"就行了。
拓展
那么什么時候用contentType: "application/json;charset=utf-8"呢,后臺不是接收單個字符串,而是一個實體類時就用它了。
java代碼:
@PostMapping("/method2")
@ResponseBody
@Transactional
public Object method2(@RequestBody Body body) {
return null;
}
js代碼:
var data = {"id": i, "show_status":0};
$.ajax({
type: "POST",
url: "/method2",
data: JSON.stringify(data),
contentType: "application/json;charset=utf-8",
success: function (result) {
$("#my_result").html(JSON.stringify(result));
},
error: function () {
console.log("shibai")
}
});
這樣java后臺會得到一個有id和show_status屬性的Body類,注意一定要JSON.stringify(data),不能直接傳data。
以上這篇解決SpringMVC接收不到ajaxPOST參數(shù)的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot中ApplicationEvent的使用步驟詳解
ApplicationEvent類似于MQ,是Spring提供的一種發(fā)布訂閱模式的事件處理方式,本文給大家介紹SpringBoot中ApplicationEvent的使用步驟詳解,感興趣的朋友跟隨小編一起看看吧2024-04-04
Spring?boot?運(yùn)用策略模式實現(xiàn)避免多次使用if
這篇文章主要介紹了Spring?boot?運(yùn)用策略模式實現(xiàn)避免多次使用if,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-09-09
Java基礎(chǔ)之JDK1.8新特性lambda表達(dá)式詳解
函數(shù)式接口有且僅有一個抽象方法,但是可以有多個非抽象方法的接口,函數(shù)式接口可以被隱式轉(zhuǎn)換為lambda表達(dá)式,這篇文章主要介紹了Java基礎(chǔ)之lambda表達(dá)式(JDK1.8新特性),需要的朋友可以參考下2023-08-08

