javascript/Ajax仅在调试时工作

javascript/Ajax only working when debugging

本文关键字:调试 工作 Ajax javascript      更新时间:2024-06-08

我想在用户关闭浏览器时删除用户会话和相关数据。我提到这个(http://weblogs.asp.net/kaushal/archive/2011/02/25/user-is-trying-to-leave-trap-and-set-confirm-alert-on-browser-tab-close-event.aspx)post和我有一些编码如下。我想在用户关闭浏览器时从应用程序状态和SQL server数据库中删除用户数据。我是在一个管理员的帮助下做这件事的。下面的代码在调试时运行良好,它正在调用处理程序并执行我写入其中的所有代码。但当我真正使用这个应用程序时,它就不起作用了。我不知道问题出在哪里。而且它占用了我的时间。(我在母版页的内容中使用这个)

window.onbeforeunload = confirmExit;
function confirmExit() {

    var UserID = '<%= Session["UserID"] %>';
        $.ajax({
            type: "POST",
            url: "../../Handlers/HandlerUser.ashx?Action=RemoveUserDataOnBrowserClose&UserID=" + UserID.toString(),
            contentType: "application/json; charset=utf-8",
            async: false,
            success: function (data) {
            }
        });
}

如果有人能提出另一种方法来实现同样的目标,那将是一个很大的帮助。

我的猜测是它不工作,因为它是异步调用。函数在调用发生之前退出。

我建议您中断关闭操作,从数据库中清除数据,然后在回调中以编程方式调用关闭事件。

我找到了这篇可能对你有帮助的帖子。

我终于得到了答案。我的问题是我的处理程序没有调用,这是因为我没有将Forms Authentication添加到我的应用程序中。我在身份验证后添加了此代码,它运行良好。
FormsAuthentication.RedirectFromLoginPage(UserID, false);

我不知道这是必要的。感谢每一位帮助我的人。