为啥servlet中的response.sendRedirect()在收到JQuery的post请求后不起作用?
Posted
技术标签:
【中文标题】为啥servlet中的response.sendRedirect()在收到JQuery的post请求后不起作用?【英文标题】:Why the response.sendRedirect() in servlet doesn't work after receiving the post request of JQuery?为什么servlet中的response.sendRedirect()在收到JQuery的post请求后不起作用? 【发布时间】:2012-05-29 13:38:49 【问题描述】:在 blog-edit.html 中,使用 JQuery 将 post 请求发送到服务器端(java servlet)。
$("#btn").click(function()
$.post("/blog/handler","content":$('#textarea').val(),
function(data)
alert("Data Loaded: " + data);
if(data.toString().length>1)
alert("Saved!")
else
alert("Failed!")
)
在服务器端:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
String content = request.getParameter("content");
System.out.println(content);
response.sendRedirect("/blog/list");
return;
我看到的是服务器端正在打印来自 html 的内容,并且弹出警报窗口说“已保存!”。但是重定向功能不起作用
搜索后我别无选择,只能使用jquery重定向:
if(data.toString().length>1)
alert("Saved!")
window.location.replace("/blog/list")
它有效,但这不是我想要的
请帮忙
【问题讨论】:
servlet 被调用了吗?你看到你的 System.out.println(content) 了吗? 是的,我可以在 servlet 中看到输出 【参考方案1】:在使用 ajax 时。你不能执行服务器端重定向。
但是,在这种情况下,有更好的方法可以在客户端上重定向。
See Here
【讨论】:
使用 ajax 时。您不能执行服务器端重定向。为什么?! 就是这样。你需要自己阅读一些关于它的东西。在使用 ajax 之前。以上是关于为啥servlet中的response.sendRedirect()在收到JQuery的post请求后不起作用?的主要内容,如果未能解决你的问题,请参考以下文章
javaEE中的服务器web.xml配置的时候为啥一定要配置servlet,而不用配置jsp
为啥实时 AppEngine 没有调用我的 servlet 过滤器?
servlet获取session中的值,为啥获取用户id时每次得到的都是id=0(数据库中为1),其他的字段没问题!