POST返回404,而GET在对SpringMVC控制器的Ajax调用上运行良好



我必须从JSP向控制器传递一个长的Base64字符串。我在控制器上有所有的@requestmapping方法作为GET方法。当我试图将base64字符串作为子值发送时,它抛出了一个错误,指出了标头大小的问题。一些研究让我明白,如果我的方法接受POST请求,这就不是问题。

我一直在为我的get方法使用相同的代码,它们一直工作得很好。。。但当我把它改成post时,它开始抛出404。

以下是我正在做的事情:

JS:

var搜索={"KEY":"VALUE"}

$.ajax({
type : "POST",
contentType : 'application/json; charset=utf-8',
dataType : 'json',
url : "/AjaxTest",
data : JSON.stringify(search),
success : function(result) {
console.log("SUCCESS: ", data);
alert(result);
},
error: function(e){
console.log("ERROR: ", e);
alert(e);
},
done : function(e) {
console.log("DONE");
}
});

控制器:

@RequestMapping(value = "/AjaxTest", method = RequestMethod.POST)
public @ResponseBody String AjaxTest(@RequestBody String MyData) {
return MyData;
}

有人能告诉我我缺了什么吗?

提前感谢

我认为问题在于您正在指定type: "POST",但实际的jQuery.ajax函数使用method属性来指定http方法。GET之所以有效,是因为方法属性默认为GET。试试这样的东西:

$.ajax({
method : "POST",
contentType : 'application/json; charset=utf-8',
dataType : 'application/json',
url : "/AjaxTest",
data : JSON.stringify(search),
success : function(result) {
console.log("SUCCESS: ", data);
alert(result);
},
error: function(e){
console.log("ERROR: ", e);
alert(e);
},
done : function(e) {
console.log("DONE");
}
});

最新更新