代码之家  ›  专栏  ›  技术社区  ›  noclist

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

  •  0
  • noclist  · 技术社区  · 6 年前

    我有一个在用户注销时执行的函数。它包含一个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 回复  |  直到 6 年前
        1
  •  1
  •   Hackinet FATCHOLA    6 年前

    使用 async:false 所以它会一直等到Ajax调用返回,然后才移动到下一行,让您注销。

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