使用Spring控制器的Ajax POST失败,但没有服务器错误

时间:2015-12-03 12:07:52

标签: jquery spring post

我正在向我的Spring MVC控制器发送POST请求。我一直在调整代码几个小时,并从控制器中获取各种错误,例如400,404或415.

最后,现在我的POST请求正在运行(因为控制器将所有数据记录到控制台),但Ajax success回调从未被触发,但fail检查功能始终是。

我的Ajax请求:

        $.ajax({
                'type': 'POST',
                'url': '/iQuality/post-test',
                'data': $("#wizard-form").serializeJSON(), 
                'dataType': 'json',
                'headers': {
                    'Accept': 'application/json',
                    'Content-Type': 'application/json' 
                },
                'success': function(){
                    console.log('mandarina');
                }
            })
            .fail(alert("Error!"));

My Spring控制器:

@RequestMapping(value = "/post-test", method = RequestMethod.POST, headers = { "Content-type=application/json" })
@ResponseStatus(value = HttpStatus.OK)
private @ResponseBody void handleWizardPost(@RequestBody WizardForm1 wf){

    logger.debug("[post-test] : Called route");

    logger.info(wf.getSistema());
    logger.info(wf.getNombrePase());
    logger.info(wf.getEsAtipico());

}
顺便说一句,控制器应该发送一个空响应(我希望视图保持在同一页面,没有页面刷新)。

1 个答案:

答案 0 :(得分:0)

帖子参数包括:

'dataType': 'json',

您的控制器可能没有使用格式正确的json字符串进行响应,然后jQuery无法将响应解析为json,并且永远不会调用您的success回调。 如果您的回复为空,请尝试发送'{}',这样可以解决问题。

或者您可以从参数中删除'dataType': 'json',默认为'string,jQuery不会尝试解析它,并会调用success回调。