
页面关闭时执行的 ajax 请求无效
在使用 javascript、ssm 和 java 技术开发项目时,开发人员遇到这样的问题:在页面关闭时执行的 javascript 方法可以正常进入,但是方法中的 ajax 请求却无法执行。
问题代码如下:
$(window).on('unload', function() {
$.ajax({
type: 'POST',
url: '${ctx}/wms/ebPurchaseItem/choiceItem',
data: {id: "", caozuo:"clear"},
async: false,
success: function(data){
console.log("调用完成ajax");
alert (data);
}
});
console.log("结束");
alert ("结束");
});对于这个问题,有两种解决方法:
- 使用 navigator.sendbeacon() 函数。该函数专门用于在浏览器关闭后发送请求,可以保证请求能发送到后端。但是,注意兼容性问题。
- 直接设置 cookie(session id)有效期,或将 session id 放在浏览器内存中。当浏览器关闭时,session id 失效或被清除,从而实现清除 session 的目的。










