0

拔掉我的头发。无数小时试图让ajax调用工作......

查询:

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 {}”并且永远不会调用成功函数警报。

4

1 回答 1

1

它可能不会影响传入的数据,但您确实不需要对数据参数执行 JSON.stringify 操作。请参阅http://api.jquery.com/jQuery.ajax/#example-0

此外,如果您尝试从 Spring MVC 控制器中获取 JSON,则需要使用 @ResponseBody 注释。这将指示 Spring 不要尝试渲染模板。实际上,我不久前写了一篇关于从 Spring MVC 应用程序中获取 JSON 的博客文章,这可能会有所帮助。

此处标题为“使用 @ResponseBody 注释映射响应正文”的部分可以为您提供更多信息

此外,success() 函数已折旧。现在应该使用 done() 函数。更多信息可以在上面的 jquery url 中看到。

希望这可以帮助!

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

于 2013-09-04T20:36:08.290 回答