我有以下代码,用于在用户关闭聊天窗口时记录事件:
$(window).unload( function() {
test();
});
function test()
{
alert("Hi");
$.ajax({
type: "POST",
url: baseUrl + 'Index/test',
data: "user_id=" + "Nisanth" + "& chat_id=" + 2,
success: function(msg){
alert(msg);
}
});
alert('Success');
}
“Hi”和“Success”消息都很好,但 AJAX 回调中的警报没有...我打算通过 AJAX 请求触发的操作也没有发生(我正在开发聊天应用程序,并打算在用户关闭窗口时在数据库中记录一个条目)。
最佳答案
因为 ajax 是异步的,所以在正确发送响应之前页面正在卸载,有效地终止了连接。尝试设置 async:false;
,尽管这会延迟卸载页面,直到收到响应之后,如果您的服务器运行缓慢,这对用户体验来说不是很好。
$(window).unload( function () {
test();
});
function test()
{
alert("Hi");
$.ajax({
async: false,
type: "POST",
url: baseUrl + 'Index/test',
data: "user_id=" + "Nisanth" + "& chat_id=" + 2,
success: function(msg){
alert(msg);
}
});
alert('Success');
}
关于javascript - 为什么我不能使用 jQuery 从卸载事件处理程序中触发 AJAX 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2274949/