关于原生ajax获取后台servlet的response返回的数据问题

在一次回顾原生ajax获取后台数据时遇到了如下问题:
后台servlet使用了重定向将前端页面ajax传过来的值做了一个判断,然后返回结果给前端去弹框显示,如下代码:

response.getWriter.print();
response.sendRedict("index.html");

前端接收主要代码:

	var msg = xhr.responseText;
	alert(msg);

然后弹窗直接显示的是一块HTML的代码,后来把重定向代码注释后,显示的才是msg的内容,之后又把response.getWriter.print();进行注释(重定向未注释),发现弹窗是代码片段,所以认为重定向返回的是一个页面并且会覆盖,又想了一下感觉不严谨,如果是 response.getWriter.print()**;response.sendRedict(“index.html”);
这两行返回的数据间隔太短,所以导致前端接收的太快才认为是重定向的数据覆盖,所以servlet改了一下代码

response.getWriter().print(msg);

			Thread th = new Thread();
			th.run();
				try {
					th.sleep(5000);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			
			response.sendRedirect("index.html");

让程序在两行代码卡5秒看会不会看到两个弹窗,结果就是没有msg的弹窗,等5秒后才有代码段的弹窗,那么是不是*response.getWriter().print(),*返回的数据是跟随重定向的页面而去返回的呢!?但是开头就试验过没有重定向,他也能回传数据,所以创建了一个新的test.html页面,运行的时候发现重定向功能居然没执行!

天哪! servlet的重定向居然没有执行,然后上网查了一下,别人也有这样的问题(此处可上网搜索 关键词“ajax会不会重定向”)原来ajax只会做获取数据的工作,其他请求一概无视

想到这里,就是重定向返回的代码片段把上面一行的msg的数据覆盖了,所以如果在重定向后面再加一个返回msg那是不是就能返回msg
结果最终返回的还是代码段,把代码段注释,又加了几个response.getWriter().print(),都能返回但是只要有重定向,重定向后面的数据好像返回不了

总结:ajax只做获取返回数据的工作,不会处理其他的请求

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值