单击按钮ajax时刷新用户所在的页面

时间:2014-01-11 16:05:17

标签: javascript jquery ajax

我在用户登录时显示了一个注销按钮,现在它只在主页上,我想在用户点击注销时刷新同一页面, 我创建了一个函数,以便在按下logout时刷新与刷新它登录用户相同的页面,但是当点击注销时它不会刷新

function logout() {
    $("#logout").live("click",function(){
        $(document).ajaxStop(function(){
            window.location.reload();
        });
    });
};

3 个答案:

答案 0 :(得分:0)

我很困惑你为什么要绑定到点击处理程序体内的ajaxstop,但是如果你只想点击注销按钮重新加载页面,你可以使用以下内容:

function bindToLogoutClick() {
    $("#logout").on("click",function(e){
        e.preventDefault(); //Used to restrict page posting to server if logout is a submit button.
        window.location.reload();
        return false; //Used to restrict page posting to server if logout is a submit button.
    });
};

当然在某处您还必须调用bindToLogoutClick()函数来设置绑定到按钮的click事件,就像在DOM加载上一样:

$(function() {
   bindToLogoutClick();
});

答案 1 :(得分:0)

我不确定你的ajaxStop回调是否真的被调用,在ajax调用之后,使用console.log测试它或者只是提醒它,如下所示:

$("#logout").live("click",function(){
    $(document).ajaxStop(function(){
        alert('ajaxStop callback');
        window.location.reload();
    });
});

如果未调用,则表示您在页面中有一个或多个未完成的ajax请求。如你所知.ajaxStop()

  

注册所有Ajax请求完成时要调用的处理程序

您可以查看浏览器开发人员工具并查找正在进行的xhr请求。

  • 您的问题很可能是在所有Ajax请求完成后添加.ajaxStop()触发器,然后由于没有正在进行的ajax调用,它将永远不会触发

  • 问题是,如果您使用多个高级jQuery或其他客户端框架组件,它可能永远不会发生。我的意思是高级组件通常总是在后台使用ajax请求,你甚至不知道。

  • 其他可能的问题可能是ajax请求经过超时而未完成。

  • 您必须小心global选项,因为:

  

如果在全局选项设置为false的情况下调用$ .ajax()或$ .ajaxSetup(),则.ajaxStop()方法将不会触发

例如,如果您有这样的ajax调用:

$.ajax({
    //...
    global: false,
    // ...
});

$.ajaxSetup({
    ...
    global: false,
    ...
});
$.ajax(...);

你的.ajaxStop()方法不会触发

答案 2 :(得分:0)

尝试类似的事情;

function logout() {
  $("#logout").live("click",function(){
    $.ajax({  // do the ajax request
      url:"file.php",
      success:function(result){
        alert(result);//do something if you want or simply remove
        location.reload();
      }
    });
  });
};