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结果的一些内容。无论如何,我认为该工作流不好,我将使用重定向操作并使用其他技巧显示消息