19
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

onunload時にPOSTしたい時。

Posted at

アクセスログを取るのに、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に設定(同期通信)した場合、通信に応答があるまでブラウザはロックされ、操作を受け付けなくなることに注意してください。

ふむ…?

19
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?