我有以下功能,当用户注销时执行。它包含一个带有成功和失败功能的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) {
}
});
}
答案 0 :(得分:1)
使用async:false
,使其等待直到返回Ajax调用,然后才在下一行退出您的页面。
所以您的修改版本是:
url: url,
type: "Get",
data: {},
async:false,
success: ...