我有以下代码,旨在在用户关闭聊天窗口时记录事件:
$(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;,尽管这会延迟卸载页面,直到接收到响应之后,如果您的服务器运行缓慢,这对于用户体验来说并不好。
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'); }