ajax调用的行为因浏览器而异

时间:2018-10-11 15:42:34

标签: javascript ajax

我有以下功能,当用户注销时执行。它包含一个带有成功和失败功能的ajax调用。我的网站使用zendesk的聊天窗口小部件,该窗口小部件提供API在聊天窗口中执行各种操作。成功注销后,我正在执行endChat()函数以结束当前聊天。在Chrome中,这很好用,我可以使用开发人员工具进行调试,并观察执行指针是否被击中$zopim.livechat.endChat();。但是,在FireFox和IE中,用户都将在命中该行之前注销。这些浏览器处理Ajax调用的方式之间有差异吗?

function logout(supressConfirmation, reason) {
    var url = $("#LogoutStatus").data('url');
    $.ajax({
        url: url,
        type: "Get",
        data: {},
        success: function (data) {
            if (data.isUpdating && supressConfirmation != true) {
                $("#logout-modal").modal('show');
            }
            else {
                window.location.href = '@Html.Raw(Url.Action("Logout","Logout"))' + '?reason=' + reason;
            }
            zE(function () {
                $zopim(function () {
                    $zopim.livechat.endChat();
                });
            });
        },
        error: function (failure) {
        }

    });
}

1 个答案:

答案 0 :(得分:1)

使用async:false,使其等待直到返回Ajax调用,然后才在下一行退出您的页面。

所以您的修改版本是:

    url: url,
    type: "Get",
    data: {},
    async:false,
    success: ...