XMLHttpRequest获取后台response返回的数据
开发MVC网站的过程中遇到令人头疼的bug——在js中通过XMLHttpRequest获取后台返回的数据竟然是当前页面的Html代码!!!
后台Controller:
public class LoginController implements org.springframework.web.servlet.mvc.Controller {
UserService userService;
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
ModelAndView modelView = new ModelAndView();
//...
if (...) {
System.out.println("登录成功");
modelView.addObject("message", 1);
} else {
System.out.println("登录失败");
modelView.addObject("message", 0);
}
JSONObject json = JSONObject.fromObject(modelView.getModel());
String strJson = json.toString();
PrintWriter writer = response.getWriter();
response.setContentType("application/json;charset=utf-8");
writer.print(strJson);
writer.close();
return modelView ;
}
}
前台JS:
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
alert(xhr.responseText);//显示当前页面的代码,不是{“message”, 1}
var json = JSON.parse(xhr.responseText);
}
xhr的类型是错误的html,而不是图中的json
解决办法:
Controller中的return modelView改为return null