我正在向我的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());
}
顺便说一句,控制器应该发送一个空响应(我希望视图保持在同一页面,没有页面刷新)。
答案 0 :(得分:0)
帖子参数包括:
'dataType': 'json',
您的控制器可能没有使用格式正确的json
字符串进行响应,然后jQuery无法将响应解析为json,并且永远不会调用您的success
回调。
如果您的回复为空,请尝试发送'{}'
,这样可以解决问题。
或者您可以从参数中删除'dataType': 'json'
,默认为'string
,jQuery不会尝试解析它,并会调用success
回调。