Estoy mirando la consola en Firebug cuando hago clic en una función que realiza una solicitud de AJAX. El problema es que un clic de un botón debería enviar 1 solicitud de ajax, pero recibo 2 solicitudes que se envían.¿Por qué mis solicitudes jquery ajax se repiten varias veces?
el código de mi js se parece a esto:
$(document).ready(function() {
$('.book_now').click(function(){
$.ajax({
type: 'POST',
url: '/booking.php',
data: 'event_id='+event_id+'&time_id='+time_id,
success: function(data) {
console.log('inside');
$('#booking_box_content').html(data);
}
});
});
});
que parece bastante sencillo ¿verdad?
En mi consola, sin embargo, veo 2 solicitudes GET desactivadas 1 clic.
Mi botón es simplemente:
<div class="book_now"></div>
Me estoy perdiendo algo - no se supone que es de 2 peticiones GET?
¿Es por casualidad volver a cargar la función $ (document) .ready() cuando se carga el nuevo archivo y luego se vuelve a ejecutar la función de clic?
Nota: No hago doble clic en el botón. Probablemente no importe, pero si lo cambio a POST también lo hace dos veces.
Editar: la respuesta de booking.php
<div id="booking_box_left">
<h1 class="speaker_name"></h1>
<h1 class="event_name"></h1>
<div class="event_start_header">Start</div><div id="event_start_datetime">, </div>
<div class="cleared"></div>
<div class="event_end_header">End</div><div id="event_end_datetime">, </div>
<div class="cleared"></div>
<div class="event_where_header">Where</div><div id="event_where"><strong></strong><br /><br />
</div>
</div>
<div id="booking_box_right_container">
<form id="booking_form_1" method="post">
<input type="hidden" name="booking_id" value="7a614fd06c325499f1680b9896beedeb" />
<input type="hidden" name="event_id" value="" />
<input type="hidden" name="time_id" value="" />
<div id="booking_box_right">
<h1>To reserve your seat</h1>
<input type="text" name="booking_email" class="enterSomething booking_email" title="Enter your email..." />
<div class="booking_email_helper">On clicking next a ticket will be held for you for a short period for you to complete your registration.</div>
<input type="submit" id="next" value="Next" />
</div>
</form>
</div>
Nota: no hay nada en esta respuesta tiene ninguna función que se dispare a mi conocimiento. Soy escéptico de que la respuesta sea lo que se despide de la solicitud de ajax dos veces ... si la función de hacer clic solo se está ejecutando una vez, entonces no puede ser que el botón esté ejecutando la función dos veces, pero el $ .ajax() parte, es decir, la devolución de llamada de éxito que es. He actualizado el código JS para mostrar cómo he estructurado las cosas de console.log().
edición final:
Mi función ajax estaba envuelto en el interior de los siguientes:
$('#shade, #booking_box').fadeIn(function(){
// ajax function
}
no tenía ni idea, pero estaba llamando esta función para que cuando el #shade (mi thickbox) y el #booking_box entró corriendo el DOS VECES! :(
me siento como una herramienta
Gracias a todos por su ayuda
tal vez algo no está bien en sus otros códigos, pero que debería funcionar bien y sería solo una solicitud. [demo] (http://jsfiddle.net/3KRJX/) – Reigel
¿Alguna posibilidad de que tenga un '.book_now' anidado dentro de otro? – user113716
@KeenLearner: publique una captura de pantalla de lo que está viendo ... y como control de cordura, llame a console.log() en su controlador de clics y vea si * ese * aparece dos veces. – Shog9