使用AJAX和Java注销不起作用
我有一个使用jQuery的AJAX,当我单击ID为使用AJAX和Java注销不起作用,java,jquery,ajax,servlets,Java,Jquery,Ajax,Servlets,我有一个使用jQuery的AJAX,当我单击ID为注销的链接时就会触发它 阿贾克斯: AJAX调用我的Java Servlet,请参见以下内容: /** * Servlet implementation class Logout */ @WebServlet(description = "Logout User", urlPatterns = { "/Logout" }) public class Logout extends HttpServlet { private static
注销的链接时就会触发它
阿贾克斯:
AJAX调用我的Java Servlet,请参见以下内容:
/**
* Servlet implementation class Logout
*/
@WebServlet(description = "Logout User", urlPatterns = { "/Logout" })
public class Logout extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*//*
public Logout() {
super();
// TODO Auto-generated constructor stub
}*/
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
session.invalidate();
response.setStatus(response.SC_MOVED_TEMPORARILY);
response.setHeader("Location", "index.jsp#login");
}
}
当点击链接时,我的jQuery总是会触发,但是它似乎并不总是调用注销Javaservlet。为什么会这样
编辑:
当我使用chromedev工具逐步完成jQuery代码时,它可以工作,但在正常运行时就不行了
HTML:
您可能需要关闭缓存:
$.ajax({
url: "Logout",
cache: false
});
更新:尝试此操作-防止单击时跟踪链接-它可能在AJAX调用启动之前重定向页面
$("#logOut").click(function(e){
e.preventDefault();
$.ajax({
url: "Logout",
cache: false
});
});
这篇文章有很好的答案:
如果必须重新加载页面,则仍然需要禁用链接以确保注销操作发生。要在注销后重定向,只需将成功处理程序或.done函数添加到ajax调用中即可重新加载页面。尝试以下代码
$(document).ready(function() {
$("a#logOut").click(function() {
$.get("Logout");
});
});
在HTML代码中,需要将servlet的URL映射放在href
属性中:
<li><a class="linkButtons" href="Logout" id="logOut">Log Out</a></li>
这样,在提交请求时,请求将被发送到正确的URL。您需要完全限定AJAX调用中使用的URL。完全限定是什么意思?你是说一个绝对的URL吗?@EvertonAgner完全限定的URL不是必需的,OP提供的URL在ajax调用中已经足够多了。这是真的,我的错误。编辑了原始帖子。编辑了原始帖子。编辑了原始帖子。这是我发布的所有js,除了文档。就绪
,我现在发布我的HTML代码。
<li><a class="linkButtons" href="Logout" id="logOut">Log Out</a></li>