【发布时间】:2018-04-03 17:45:15
【问题描述】:
当我尝试将带有 ajax 的列表发送到 spring 控制器中的方法时,我收到此错误:
不支持内容类型“application/x-www-form-urlencoded”
我的 AJAX 代码:
$('#btn-save').click(
ajaxSend();
);
function ajaxSend() {
$.ajax({
url: "/kepres2Web/mvc/spatiu/update",
type: 'POST',
dataType: 'json',
contentType: "application/json;charset=UTF-8",
data: JSON.stringify(rects),
success: function (data) {},
error: function (data, status, er) {},
headers: {
'Content-type': 'application/x-www-form-urlencoded'
}
});
}
我的方法:
@RequestMapping(value = "/update", method = RequestMethod.POST, produces = {"application/json", "application/xml"}, consumes = {"application/x-www-form-urlencoded"})
public String update(@ModelAttribute("record") Spatiu spatiu,@RequestBody List<Desk> deskList) {
System.out.println(deskList.get(0).getFill());
dao.update(spatiu);
//return null;
return "redirect:view?ls&id=" + spatiu.getId();
}
还有我的按钮:
<button id="btn-save" type="submit" form="frmDetails" formaction="update">
<img src="${pageContext.request.contextPath}/img/actions/save.png">
<br>Salvare
</button>
编辑
发现 Spring 无法将 application/x-www-form-urlencoded 理解为 RequestBody,因此我将其删除并在方法上添加了 @ResponseBody。现在它返回并清空列表。
【问题讨论】:
-
您设置了两次内容类型 - 一次在
contentType选项中,一次在headers选项中,并且您将其设置为两个不同的值。 -
另请参阅stackoverflow.com/questions/33796218/… 以了解可能的消息解决方案。
-
删除了标题。仍然无法使用@ADyson。同样的错误
-
添加消费作为应用程序 json。你只有产品。
标签: javascript jquery ajax spring spring-mvc