Javascript onbeforeunload等待ajax结果

Javascript onbeforeunload等待ajax结果,javascript,jquery,ajax,Javascript,Jquery,Ajax,onbeforeunload()函数是否可以等待ajax结果并根据结果值移动到jsp,或者在卸载之前至少显示一条消息 是否可以使用setTimeOut或某些自定义等待功能来解决此问题,或者我必须考虑其他工作流。好的,这是不可能的onbeforeunload的功能非常有限,否则恶意网站可能会阻止您离开其网站 附录:可以显示类似“您将离开此页面”的消息。在这种情况下,beforeunload()函数必须返回字符串 范例 window.onbeforeunload = function() {

onbeforeunload()
函数是否可以等待ajax结果并根据结果值移动到jsp,或者在卸载之前至少显示一条消息


是否可以使用setTimeOut或某些自定义等待功能来解决此问题,或者我必须考虑其他工作流。好的,这是不可能的
onbeforeunload
的功能非常有限,否则恶意网站可能会阻止您离开其网站

附录:可以显示类似“您将离开此页面”的消息。在这种情况下,
beforeunload()
函数必须返回字符串

范例

window.onbeforeunload = function() {
   return 'Are you sure about that?';
}

使用(“AJAX”是一个误称)。

显示等待AJAX响应的警报框不是一个好主意。通常,在ajax响应后,您可以使用消息的警报框来确认离开页面

例如,为了避免使用警报,可以同步调用Ajax

if(window.XMLHttpRequest) xmlHttpObj=new XMLHttpRequest();
else xmlHttpObj=new ActiveXObject("Microsoft.XMLHTTP");
if(xmlHttpObj){
xmlHttpObj.onreadystatechange=function(){
if(xmlHttpObj.readyState==4 && xmlHttpObj.status == 200){
 // your logic required
}
}
xmlHttpObj.open("GET", "your request url", false); // used false for synchronous call 
xmlHttpObj.send(null);
}
else{
alert("AJAX not support");
}    

这是我的策略,对我有效:

_number_of_active_ajax ++;
$.ajax({
    url: REQUEST_URL,
    timeout: 3000
})
.always(function() {
    _number_of_active_ajax --;
});

window.onbeforeunload = function() {
    if(_number_of_active_debounce > 0 || _number_of_active_ajax > 0)
        return "Your question";
}
}


如果页面有活动请求,它将显示一条要使用的消息。

可能通过同步调用,实际上该消息包含ajax结果的一些内容。无论如何,我认为该工作流不好,我将使用重定向操作并使用其他技巧显示消息