一連のページの一連のUIコンポーネントでのマウスクリックイベントを追跡したいと思います。これを行うために、私は次のjquery / ajax呼び出し(トリミングされたu)を使用しています:
1.クリックログを追加するAjax呼び出し。
myClickLogger = {
endpoint: '/path/to/my/logging/endpoint.html',
logClickEvent: function(clickCode) {
$.ajax({
'type': 'POST',
'url': this.endpoint,
'async': true,
'cache': false,
'global': false,
'data': {
'clickCode':clickCode
},
'error': function(xhr,status,err){
alert("DEBUG: status"+status+" \nError:"+err);
},
'success': function(data){
if(data.status!=200){
alert("Error occured!");
}
}
});
}
};
2. ajaxロガーを呼び出すJQueryクリックイベント(clickCodeはボタン/画像がクリックされた識別子です):
$(document).ready(function() {
$(".myClickEvent[clickName]").click(function() {
var clickCode = $(this).attr("clickName");
myClickLogger.logClickEvent(clickCode);
});
});
上記のajax呼び出し(1.)は、追跡されているボタンのクリックが新しいページに移動するたびに、ブラウザーによって「キャンセル」されます。
'aysnc'を'false'に変更すると、ajax呼び出しは成功します。
また、新しいページに移動しないクリックイベントは成功します。新しいページに移動するクリックイベントのみがキャンセルされます。
呼び出しを同期させたくありません。
何かアイデアはありますか、何が問題になる可能性がありますか?クリックイベントが新しいページに移動したときに、以前の非同期呼び出しが終了することを保証するにはどうすればよいですか?