我想跟踪一组页面上一组 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.JQuery点击事件将调用ajax记录器(clickCode是点击按钮/图像的标识符):
$(document).ready(function() {
$(".myClickEvent[clickName]").click(function() {
var clickCode = $(this).attr("clickName");
myClickLogger.logClickEvent(clickCode);
});
});
每当被跟踪的按钮点击进入新页面时,上面的 ajax 调用(1.) 就会被浏览器“取消”。
如果我将“async”更改为“false”,则 ajax 调用会成功。
此外,未进入新页面的单击事件也会成功。仅取消进入新页面的点击事件。
我不想使呼叫同步。
任何想法,可能是什么问题?如何保证点击事件进入新页面时之前的异步调用完成?