Estoy tratando de escribir la función jquery que enviará una solicitud ajax y tendrá un mensaje de confirmación antes de la solicitud. La solicitud funciona correctamente, pero tengo ese error cuando cancelo la solicitud en el aviso anterior. Aquí está mi código
$('#AddBug').on('submit',function (e) { var bugNumber = $("#bugNumber").val(); var product = '<?php echo $_GET['product']?>'; var version = '<?php echo $_GET['version']?>'; e.preventDefault(); $.ajax({ type: 'post', beforesending:checkAddBug(), url: 'AddBug.php', data: { bugNumber : bugNumber, product : product, version : version }, success:function(data) { alert(data); //=== Show Success Message== }, error:function(data){ alert(data); //===Show Error Message==== } }); }); function checkAddBug(xhr){ var bugNumber = $("#bugNumber").val(); if(!(confirm('Are you sure to add bug ' + bugNumber + ' to database?'))){ xhr.abort(); } }Lo que necesito cambiar para evitar ese error en la consola
Primero, escribió mal el nombre de la función, es beforeSend , no beforesending .
A continuación, no debe llamar a la función de inmediato, como escribió:
antes de enviar: checkAddBug()
En su lugar, proporcione la función sin paréntesis:
beforeSend: checkAddBug Además, la función checkAddBug simplemente debería devolver false , si la solicitud debe cancelarse, no es necesario el objeto xhr .
Como se puede ver en los documentos :
Devolver false en la función beforeSend cancelará la solicitud.
Entonces te recomendaría reestructurar tu código, así:
$('#AddBug').on('submit', onSubmit); function onSubmit(e) { var bugNumber = $("#bugNumber").val(); var product = '<?php echo $_GET['product']?>'; var version = '<?php echo $_GET['version']?>'; e.preventDefault(); if(confirm('Are you sure to add bug ' + bugNumber + ' to database?')){ // add more checks here if required sendRequest(bugNumber, product, version) } } function sendRequest(bugNumber, product, version) { $.ajax({ type: 'post', url: 'AddBug.php', data: { bugNumber : bugNumber, product : product, version : version }, success:function(data) { alert(data); //=== Show Success Message== }, error:function(data){ alert(data); //===Show Error Message==== } }); }