问题:点击搜索按钮后,跳转到指定的servlet从数据库中取数据,然后通过request请求转发,将数据返回到页面刷新
req.getRequestDispatcher(“RentSearch.jsp”).forward(req,resp);
分析:测试许久,都没有效果!后来才发现,如果表单是用ajax提交的,那么servlet内部无论是使用response.sendRedirect 或者 request.getRequestDispather() 都是无效的,这是为什么呢?
原因:因为servlet拿到的是ajax发送过来的request,而不是浏览器发送的请求的,所以servlet对request进行请求转发和重定向对浏览器都不能影响浏览器的跳转,这就是请求转发和重定向失效的原因。
解决方案
方案一:
要想让 response.sendRedirect() 生效,一定不能使用 ajax,只能使用同步的 form 表单提交;像这样
方案二:
不管正确还是错误,都应该返回一个值给ajax,让ajax去跳转或干其他的事.使用ajax本来就是为了局部刷新网页,而不是跳转。
获取input text 的值作为a标签的参数值
前台
<a href="" οnclick=“getkey(this)” style=“text-decoration: none; color: #FFFFFF”>搜索
接受页面后台
string key = Request.QueryString[“Key”];