有点困惑的回应。我通过来自不同JSP页面的ajax调用调用相同的方法,并得到一个不同的HTTP response
。一个给200,而另一个给400.为什么这样?
JSP
页面之间的唯一区别是level/depth
实施例
main.jsp is at level localhost/appname/main.htm
other.jsp is at level localhost/appname/myworld/other.htm
发布Ajax调用的URL对于两者都是相同的
function getResponse(value) {
$.ajax({
url: '${pageContext. request. contextPath}/posthere/callme.htm',
data: {
valueId: value,
},
type: "POST",
success: function (data) {
if(data == true) {
console.log("Success: ");
} else {
console.log("Failed: ");
}
}
});
}
控制器
@Controller
@RequestMapping(value = "/posthere")
@SessionAttributes({"userSession"})
public class MyController {
@RequestMapping(value = "/callme", method = RequestMethod.POST)
public @ResponseBody
boolean getcalled(@RequestParam("valueId") String valueId,
@ModelAttribute("userSession") UserSession userSession,
HttpServletResponse httpServletResponse) throws IOException {
if(userSession != null) {
//do your magic. Note: This logic is not getting invoked. I have a breakpoint here.
return true;
}
return false;
}
}
答案 0 :(得分:2)
检查内容类型。当内容类型为X且我发送的内容不等同于X时,我遇到了这个问题。
答案 1 :(得分:2)
在两种情况下,检查您传递的内容为valueId
如果它不能被解释为String
(不太可能)或不存在,您将获得400 Bad request
。
您的情况可能是第二个:当idValue
为undefined
时,将不会发送,因此Controller会收到不完整的数据 - 因此{{1 }}。