XMLHttpRequest获取后台response返回的数据

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
XMLHttpRequest获取后台response返回的数据_第1张图片

解决办法:
Controller中的return modelView改为return null

你可能感兴趣的:(MVC)