使用AJAX和Java注销不起作用

使用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

我有一个使用jQuery的AJAX,当我单击ID为
注销的链接时就会触发它

阿贾克斯:

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>