XMLHttpRequest获取后台response返回的数据

XMLHttpRequest与MVC数据交互
探讨使用XMLHttpRequest从MVC架构的后端获取数据时遇到的问题,详细解析了为何接收到的数据会变成HTML而非预期的JSON格式,并提供了解决方案。

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值