Tengo el siguiente código Ajax para enviar datos a Mysql DB.
<script> var amountdue; var amount; $('#btn-submit').on('click',function(e){ e.preventDefault(); if ($("#customer").validationEngine('validate')) { swal({ title: "Submit Confirmation", text: "Are you sure to submit the data?", type: "warning", showCancelButton: true, confirmButtonColor: "#126495", confirmButtonText: "Submit", closeOnConfirm: false }, function(isConfirm){ if (isConfirm) { amountdue = "<?php echo $amount_due;?>"; amount = "<?php echo $amount;?>"; $.ajax({ type: "POST", url: "submit.php", cache: false, dataType : "text", data: {amountdue : amountdue, amount : amount}, success: function(data) { window.location.href = 'customers'; }, error: function(result) { swal({ title: "Error", type: "warning", text: "Sorry, the data could not be updated due to some reasons.", confirmButtonColor: "#126495" }); } }); } //confirm }); } }); </script>El problema es que a veces (no siempre) los datos se insertan 2 o más veces en mysql DB. ¿Cómo puedo evitar este comportamiento en Ajax Submit?
$('#btn-submit').unbind();
trabajar en el éxito ?? Solicitando ayuda...
Prueba esto:
Como la primera línea de su controlador de eventos de clic, haga
e.disabled = true;Luego, tanto en sus controladores de éxito como de error para AJAX, haga esto
e.disabled = false;El objetivo de esto es suprimir los dobles clics involuntarios en su botón hasta que finalice la operación AJAX.
$('#btn-submit').off().on('click',function(e){ ……..Your code...Prueba así.