アクセスログを取るのに、PHPにPOSTでID等を渡しつつ、ページ読み込み時にpage_in_timestamp、離脱時にpage_out_timestampをデータベースに書き込みたかったのだが、
$(window).unload(function(){
$.POST("hoge.php",{id='hoge'})
});
とか
$(window).onbeforeunload(function(){
$.POST("hoge.php",{id='hoge'})
});
とか書いても上手く動かなかった。
POSTしたかったら、
$(window).unload(function() {
$.ajax({
type: "POST",
async: false,
url: "hoge.php",
data: "id=hoge",
success: function(){}
});
});
こうすればいいらしい。(実際にこれなら動いた。)
ミソは**async: false
**。
$.ajax() - http://api.jquery.com/unload/
ここのコメントに書いてあった。
jQuery.ajax(options) - jQuery 日本語リファレンス - http://semooh.jp/jquery/api/ajax/jQuery.ajax/options/
async / boolean
非同期通信フラグ。初期値ではtrue(非同期通信)で、リクエストが投げられてから応答があるまで、ユーザエージェントは非同期に処理を続行します。falseに設定(同期通信)した場合、通信に応答があるまでブラウザはロックされ、操作を受け付けなくなることに注意してください。
ふむ…?