2010-12-28 11 views
2

1人のユーザーがウィンドウを閉じるときにajaxクエリーを実行します。アイブ氏は、このコードだ: ユーザーがウィンドウを閉じたときのAjaxクエリ?

var $jQ = jQuery.noConflict(); 

$jQ(window).bind('unload', function() { 

    $jQ.ajax({ 
     type: "GET", 
     url: "http://www.mydomain.com/post_untrack.php" , 
     success: function(msg){ 
      alert("Untrack"); 
     } 
    }); 

}); 

は、私が "警告" イベントを受信しますが、スクリプトが実行されませんが...

post_untrack.php:

<?php 
mail("[email protected]", "Script executed", "Hooray!!!"); 
?> 

任意のアイデア?

ありがとうございました!

答えて

3

あなたは

async: false 

.ajax()にoptionsオブジェクトのプロパティを追加する必要があり、この作業を行うには、プラスあなたはとても

$jQ(window).bind('beforeunload',...); 
0

は、ajaxコールを実行しようとしているページと同じドメインに投稿されているURLですか?

http://en.wikipedia.org/wiki/Same_origin_policy

+0

いいえ... myotherdomain.comからajaxコールを発信しています。しかし、私は以前のajax呼び出しを同じドメインに持っています(ただし、ページが閉じられたときにトリガーがかかりません)。 – Mateo

1

jQueryのでonbeforeunload上でそれを実行する必要がありますデフォルトでは、ajaxリクエストはです。非同期です。したがって、ウィンドウがアンロードされたときにリクエストを開始することはできますが、すぐにキャンセルされ、実際にユーザーに送信されることはありません。 になりますが、要求を同期させると、同期要求によってブラウザが停止し、ユーザーエクスペリエンスが大きく損なわれます。

詳細についてはthis other SO question and its answersをご覧ください。

もちろん、すべてのajaxコールにはSame Origin Policyが適用されます(該当する場合)。

関連する問題