Chcę śledzić zdarzenia kliknięcia myszą na zestawie składników interfejsu użytkownika na zestawie stron. Aby to zrobić, używam następującego wywołania jquery/ajax (przycięte u):jquery ajax post anulowany
1. Wywołanie Ajax, które doda rejestrację kliknięć.
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 kliknij zdarzenie, które wywoła rejestrator ajax (the clickCode jest identyfikatorem, który przycisk/obraz został kliknięty): (. 1)
$(document).ready(function() {
$(".myClickEvent[clickName]").click(function() {
var clickCode = $(this).attr("clickName");
myClickLogger.logClickEvent(clickCode);
});
});
Powyższe wywołanie ajax jest " anulowane "przez przeglądarkę, gdy śledzone kliknięcie przycisku prowadzi do nowej strony.
Jeśli zmienię "aysnc" na "false", to wywołanie ajax zakończy się sukcesem.
Co więcej, zdarzenia klikania, które nie zostaną przeniesione na nową stronę, powiodą się. Tylko zdarzenia kliknięcia podejmowane na nowej stronie są anulowane.
Nie chcę, aby połączenie było synchroniczne.
Wszelkie pomysły, jaki może być problem? Jak mogę zagwarantować, że wywołanie asynchroniczne przed zakończeniem, gdy zdarzenie kliknięcia przejdzie na nową stronę?
Musisz użyć synchronicznego połączenia, inaczej forma zostanie przedstawiony, a użytkownik zostanie przeniesiony do nowej strony. Kiedy formularz zostanie przesłany, strona zwalnia, a zatem połączenia AJAX są anulowane - tak działają przeglądarki ... – Ian
Czy ktoś może mi powiedzieć o pojedynczym cudzysłowiu '' ', który jest używany w wywołaniu ajax? działa z pojedynczym cytatem również "typ" lub "sukces" i wszystko, ponieważ użyłem go bez pojedynczych cytatów .. –
Nie musisz używać połączenia synchronicznego, musisz tylko upewnić się, że praca nie jest " t Sporządzono do momentu zakończenia połączenia asynchronicznego. –