【发布时间】:2015-06-26 15:01:51
【问题描述】:
使用 Spring MVC 4。
这是我发出 POST 请求的 JavaScript 代码:
$("input.toggleCourse").change(function(e){
var d = {
classID: classID,
courseID: courseID
};
$.post(
"<c:url value="/class/addCourse" />",
JSON.stringify(d))
.done(function(data){
alert("ok");
});
});
(尝试使用和不使用 JSON.stringify,尝试使用完整的 $.ajax 而不是 $.post)
这是我的控制器
@RequestMapping(value = "/class/addCourse", method = RequestMethod.POST)
public @ResponseBody String addCourse(@RequestBody final CourseInClass cic) {
StringBuilder sb = new StringBuilder();
try{
Class c = classServ.findOne(cic.ClassID);
c.Courses.add(courseServ.findOne(cic.CourseID));
sb.append("{success:true}");
} catch (Exception e){
sb.append("{error:\"").append(e.getMessage()).append("\"}");
}
return sb.toString();
}
我检查了网络日志,它向正确的 url 发送了正确的标头。发布请求适用于普通表单,但不适用于此 ajax 调用。
谢谢。
【问题讨论】:
-
Spring MVC 对于 URL 来说可能有点混乱。完整的 URL 拆分为:
http://host/contextPath/dispatcherServletPath/controllerPath。我认为curl只会添加上下文路径。因此,如果 dispatcherServlet 没有映射到/或/*浏览器将不会命中正确的控制器。
标签: spring-mvc