Я хочу отслеживать события щелчка мыши на наборе компонентов пользовательского интерфейса на множестве страниц. Для этого я использую следующий вызов jquery/ajax (обрезанный u):jquery ajax post отменен
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 нажмите событие, которое будет вызывать АЯКС регистратор (The clickCode является идентификатором, для которого кнопка/изображения была нажата): (. 1)
$(document).ready(function() {
$(".myClickEvent[clickName]").click(function() {
var clickCode = $(this).attr("clickName");
myClickLogger.logClickEvent(clickCode);
});
});
выше Ajax вызова " отменяется "браузером всякий раз, когда щелчок на кнопке отслеживается, переходит на новую страницу.
Если я изменяю 'aysnc' на 'false', то вызов ajax завершается успешно.
Кроме того, нажмите события, которые не попадают на новую страницу, не удастся. Отмена только событий кликов на новую страницу отменяется.
Я не хочу, чтобы звонок был синхронным.
Любые идеи, что может быть проблемой? Как я могу гарантировать, что асинхронный вызов до этого будет завершен, когда событие click перейдет на новую страницу?
Вы должны использовать синхронный вызов, в противном случае форма будет отправлена, и пользователь будет принимать на новую страницу. Когда форма отправляется, страница выгружается, и поэтому вызовы AJAX отменены - вот как работают браузеры ... – Ian
может ли кто-нибудь рассказать мне о одиночных кавычках '' '', которые используются в вызове ajax? это работа с одной цитатой также «тип» или «успех», и все потому, что я использовал без одинарных кавычек. –
Вам не нужно использовать синхронный вызов, вам просто нужно убедиться, что работа isn ' t до завершения асинхронного вызова. –