如果用户尝试离开页面而不提交表单,我正在尝试使用 $.post 将表单数据发送到服务器端脚本以保存。我正在使用附加到保存按钮的相同功能,并将 setInterval 设置为每 2 分钟一次,它工作正常。但是当我将该函数附加到 document.onbeforeunload 时,它不起作用。在萤火虫中,我看到请求正在发送,但看起来它在返回状态代码并且页面继续卸载之前被停止。我对 Javascript 和 Jquery 还是很陌生,我不确定 $.post 是否可能是在 onbeforeunload 事件上不起作用的函数之一。如果这是真的,如果用户试图离开页面而不保存,还有其他方法可以发送数据吗?
This is the function I am calling from the onbeforeunload event:
function ajaxSubmit(){
var blogtitle = $("#title").val();
var publishedstate = 0;
var blogid = $("#blogID").val();
var blogbody = CKEDITOR.instances['body'].getData();
var postdata = {ajaxSubmit:true,title:blogtitle,body:blogbody,published:publishedstate,blog_id:blogid};
$.post('ajaxblog.php',postdata,function(data){
$("#autosaveMessage").html(data);
$("#autosaveMessage").show();
setTimeout(function(){$("#autosaveMessage").hide();},5000);
});
}
这就是我调用函数的方式:
var post_clicked = false;
$("#postButton").click(function(){
post_clicked = true;
});
function leaveEditor(){
if(post_clicked==false){
ajaxSubmit();
}
else{
//Do Nothing
}
}
window.onbeforeunload = leaveEditor;