window.onbeforeunload関数でAJAXを使用して、自分のサイトのページにあるテキストフィールドを自動保存しようとしています(保存ボタンはありません。 )。保存機能はPHPで書かれています。私は試みることによって開始し、以下:onbeforeunloadでAJAXを使用してフィールドデータを自動保存する
window.onbeforeunload = function(e){
var noteelement = document.getElementById('note');
var mynote = noteelement.value;
$.post('save_my_note.php', { thenote: mynote }, function(data){});
};
研究には、私は窓からオフ機能が起動する前に閉じているために起因AJAX呼び出しの非同期性に、PHPのコードが呼び出されないことを理解するようになりましたサーバ。
もちろん、他の人が言っているように、onbeforeunload関数に戻り値を追加してダイアログボックスをポップアップさせると(「あなたは本当に残しておきますか?」)、それは
$.post('save_my_note.php', { thenote: mynote }, function(data){});
return mynote;
};
私が関数はに機能を待っように非同期AJAXにこの記事の呼び出しを変更する必要があることを言われています]ダイアログボックスが応答を待つ間、.postコールが実行取得する時間を持っています完全ではありますが、構文に精通しているわけではありませんが、私が必要とする構文についてはあまりよく分かりません。私はポスト機能の代わりに以下を試した:
$.ajax({
url: "save_my_note.php",
data: "{thenote: mynote}",
async: false
});
しかし、それだけでは動作していないようです。
onbeforeunload(またはonunload ??)関数を使用して自動保存を同期的に実装するための簡単なコード例はありますか?私はjavascriptやjqueryのエキスパートではなく、私がオンラインで見つけた例は混乱しています。
最後のコードスニペットに 'async:false'と入力することを意味しましたか? – Ivan
答えを得るためにこの質問を参照してください:http://stackoverflow.com/questions/2970782/javascript-wait-until-ajax-request-finishes-to-close-page – Ivan
モバイルブラウザでonbeforeunloadが起動しないことに注意してください。モバイル市場のケータリングをしている場合には、別の方法で対応する必要があるかもしれません。 –