gpt4 book ai didi

javascript - $(window).unload 没有按预期工作

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:19:20 27 4
gpt4 key购买 nike

我正在使用 PHP + MySQL + JavaScript 制作一个小型聊天应用程序,我编写了一个函数 disonnectUser(),当用户按下断开连接按钮时调用该函数。在这里:

function disconnectUser(){
$.post('web/WEB-INF/classes/handleChatUser.php',{ action: 'disconnect',nick: localNickname});
$('#chat').stop(true,true).fadeOut(2000,function(){
nicknameDialog();
});

$('#messageInput').val(null);
$('#clientList').html(null);
$('#chatScreen').html(null);
clearInterval(refreshIntervalId);
clearInterval(refreshIntervalId2);
connected = false;
}

它就像一个魅力,但当我在另一个上下文中调用这个函数时,当用户而不是按断开连接只是退出页面时,在这个函数中

$(window).unload(function() {
if(connected){
disconnectUser();
connected = false;
}
});

这是行不通的。而且我确定它正在被调用,因为如果我发出警报,它会在关闭页面之前正常调用。我认为页面会在代码完全运行之前关闭,所以我认为如果我在那里放置一些 block 直到代码完成运行它会起作用吗?

最佳答案

问题是 $(window).unload() 在关闭窗口之前不等待任何 AJAX 调用(正确的是因为 AJAX 是异步的)。

您需要强制 AJAX 同步,即等待响应。在您的 disconnectUser 函数中:

$.ajax({
type: 'POST',
async: false, // This is the guy.
url: '/blablabla'
});

您可以在这里阅读更多相关信息:$(window).unload wait for AJAX call to finish before leaving a webpage

关于javascript - $(window).unload 没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5874182/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com