$ .postを使用して、ユーザーがフォームを送信せずにページを離れようとした場合に保存されるサーバー側スクリプトにフォームデータを送信しようとしています。保存ボタンに接続され、2分ごとに設定されたsetIntervalで同じ機能を使用していますが、正常に動作します。しかし、関数をdocument.onbeforeunloadにアタッチすると、機能しません。ファイアバグでは、リクエストが送信されているように見えますが、ステータスコードが返され、ページのアンロードが続行される前にリクエストが停止されているようです。私はまだJavascriptとJqueryにかなり慣れていないので、$。postがonbeforeunloadイベントで機能しない可能性のある関数の1つであるかどうかはわかりません。それが本当なら、ユーザーが保存せずにページを離れようとした場合にデータを送信できる別の方法はありますか?
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;