我使用objectMapper从控制器返回一个Json对象。但成功显示数据是空的。无法找到解决方案。请帮助json对象在ajax成功时为空
function voteAction(questionId, votedByUserId, action) {
$.ajax({
url: '/voteQuestion?questionId=' + questionId + '&votedByUserId=' + votedByUserId + '&action=' + action,
contentType: 'application/json',
dataType: 'json',
async: false,
success: function response(data) {
console.info("data in vote action is :: " + data);
var votesCount = data.votesCount;
alert("votes count::" + votesCount);
var status = data.status;
console.log(status + " :: is the status");
if (status == 10) {
$("#voice-box").fadeIn();
document.getElementById("statusMessage").innerHTML = "You've already VotedUp for this Question";
document.getElementById("voice-box").setAttribute("status", "saved");
setTimeout("hideStatusMessage()", 1950);
}
else if (status == -10) {
$("#voice-box").fadeIn();
document.getElementById("statusMessage").innerHTML = "You've already VotedDown for this Question";
document.getElementById("voice-box").setAttribute("status", "saved");
setTimeout("hideStatusMessage()", 1950);
}
else {
if (status == 10) {
$("#voice-box").fadeIn();
document.getElementById("statusMessage").innerHTML = "You've successfully Voted for this Question";
document.getElementById("voice-box").setAttribute("status", "saved");
setTimeout("hideStatusMessage()", 1950);
}
}
$('#questionVotes h3').html(votesCount);
}
});
}
这是我的控制器
@RequestMapping(value="/voteQuestion",method=RequestMethod.GET)
public @ResponseBody void voteQuestion(@RequestParam("questionId")String id,@RequestParam("votedByUserId")String votedByUserId,@RequestParam("action")String action,HttpServletResponse response) throws JsonProcessingException, IOException, Throwable
{
response.getWriter().println(objMapper.writeValueAsString(discussionService.updateVotesByQuestionId(id, votedByUserId, action)));
}
这是我的服务方法。
public static Map updateVotesByQuestionId(String questionId,String votedByUserId, String action)
{
int voteCount=0;
int status=0;
System.out.println("action=="+action);
Map returnMap=new HashMap ();
String responseString="";
Questions question=questionsDAO.getQuestionByQuestionId(Long.parseLong(questionId));
List votedUpUsersList = question.getVotedUpUserIds();
List votedDownUsersList = question.getVotedDownUserIds();
if(action.equals("voteUp")){
if(votedUpUsersList.contains(votedByUserId))
{
status=10;
}
else{
if(votedDownUsersList.contains(votedByUserId))
{
votedDownUsersList.remove(votedByUserId);
question.setVotedDownUserIds(votedDownUsersList);
}
votedUpUsersList.add(votedByUserId);
question.setVotedUpUserIds(votedUpUsersList);
responseString=questionsDAO.saveQuestion(question);
}}
else if(action.equals("voteDown")){
if(votedDownUsersList.contains(votedByUserId)){
status=-10;
}
else
{
if(votedUpUsersList.contains(votedByUserId))
{
votedUpUsersList.remove(votedByUserId);
question.setVotedUpUserIds(votedUpUsersList);
}
votedDownUsersList.add(votedByUserId);
question.setVotedDownUserIds(votedDownUsersList);
responseString=questionsDAO.saveQuestion(question);
}
}
if(responseString == "Success"){
voteCount= question.getVotedUpUserIds().size()-question.getVotedDownUserIds().size();
returnMap.put("voteCount",voteCount);
returnMap.put("status",status);
}
return returnMap;
}
+0
您是否使用过类似Chrome开发人员工具网络标签的内容来查看请求实际上正在响应的内容? –
+0
那么......也许你没有从服务器返回任何东西。我们怎么知道? [学习如何**调试** JavaScript](http://www.netmagazine.com/tutorials/javascript-debugging-beginners)。 –
+0
您需要先确认服务器正在响应某种内容。然后,您必须确保响应内容类型实际上是JSON。 –