Deseo hacer un seguimiento de los eventos de clic del mouse en un conjunto de componentes de la interfaz de usuario en un conjunto de páginas. Para hacer esto, estoy usando la siguiente llamada jquery/ajax (recortada u):jquery ajax post cancelado
1. Llamada Ajax que agregará el registro de clics.
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 evento de clic que se llame el registrador ajax (el clickCode es un identificador para qué botón/imagen se ha hecho clic): (. 1)
$(document).ready(function() {
$(".myClickEvent[clickName]").click(function() {
var clickCode = $(this).attr("clickName");
myClickLogger.logClickEvent(clickCode);
});
});
Lo anterior llamada AJAX es " "cancelado" por el navegador cada vez que se hace clic en el botón de seguimiento lleva a una nueva página.
Si cambio 'aysnc' a 'falso', la llamada ajax se realiza correctamente.
Además, haga clic en eventos que no llevan a una nueva página. Solo se cancelan los eventos de clic que llevan a la nueva página.
No deseo hacer la llamada sincrónica.
¿Alguna idea, cuál podría ser el problema? ¿Cómo puedo garantizar que la llamada asincrónica anterior haya finalizado cuando el evento click lleva a una página nueva?
Usted tiene que usar una llamada sincrónica, de lo contrario el formulario se haya presentado y el usuario será llevado a la nueva página. Cuando se envía el formulario, la página se descarga y, por lo tanto, se cancelan las llamadas AJAX, así es como funcionan los navegadores ... – Ian
¿alguien me puede decir acerca de las comillas simples '''' que está usando en la llamada ajax? es trabajar con la comilla simple también '' type'' o ''success'' y todo porque lo usé sin comillas simples. –
No tiene que usar una llamada síncrona, solo tiene que asegurarse de que el trabajo no sea así. t hecho hasta después de que finalice la llamada asincrónica. –