拔出我的头发。无数个小时试图让ajax呼叫工作......
Jquery的:
function doAjaxPost(episode_id) {
alert("cc");
$.ajax({
type: "POST",
url: "http://localhost:8080/yay/episodes/remove",
data: JSON.stringify({
episode_id : episode_id
}),
dataType: 'json',
contentType: "application/json",
success: function(){
alert("o");
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
console.error(errorThrown);
}
});
};
控制器:
@RequestMapping(value = "/episodes/remove", method = RequestMethod.POST)
@ResponseStatus(value = HttpStatus.OK)
public void removeEpisodeFromList(@RequestBody String episode_id) {
System.out.println("Episode_id : " + episode_id);
}
我从以下地方调用该函数:
<a href = "#" onclick = "doAjaxPost(${episode.episode_pk});"> MARK AS WATCHED </a>
它到达控制器,打印出正确的东西。 但是FireBug只是说“SyntaxError {}”并且永远不会调用成功函数警报。
答案 0 :(得分:1)
它可能不会影响传入的数据,但您实际上不需要对数据参数执行JSON.stringify操作。见http://api.jquery.com/jQuery.ajax/#example-0
此外,如果您尝试从Spring MVC控制器获取JSON,则需要使用@ResponseBody注释。这将指示Spring不要尝试渲染模板。我实际上写了一篇博文,关于在一段时间内从一个Spring MVC应用程序中获取JSON可能有所帮助。
标题为“使用@ResponseBody注释映射响应正文”here的部分可以为您提供更多信息
此外,success()函数已折旧。现在应该使用done()函数。有关这方面的更多信息可以在上面的jquery网址上看到。
希望这有帮助!