Jquery ajax调用不会达到成功函数

时间:2013-09-04 19:40:26

标签: ajax jquery spring-mvc controller

拔出我的头发。无数个小时试图让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 {}”并且永远不会调用成功函数警报。

1 个答案:

答案 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网址上看到。

希望这有帮助!

http://benashby.com/spring/response-body-annotation