Intenté implementar SweetAlert2 en mi código, intenté llamar a una función desde el botón de activación sin éxito.
¿Alguna idea de cómo arreglar este código para que funcione?
$(".delete").click(function () { swal({ title: 'Are you sure?', text: "You won't be able to revert this!", type: 'warning', showCancelButton: true, confirmButtonColor: '#3085d6', cancelButtonColor: '#d33', confirmButtonText: 'Yes, delete it!' }).then(function () { delete_post($(this).attr("id")); swal( 'Deleted!', 'Your file has been deleted.', 'success' ) }) }) });la función llamada:
function delete_post(id) { var info = {"delete_post_id":id}; $.post('index.php', info ).done(function( response ) { if(response["error"]) { $('#error').html(response["error"]); }else{ window.location = "index.php"; } }); }escriba console.info(this); antes de entonces esta fila:
delete_post($(this).attr("id")); Creo que this es su función en ese entonces.
Como dijo @Halil, es por this en su devolución de llamada desde la alerta, this no se refiere a su botón en la devolución de llamada, se refiere a la función de devolución de llamada en sí.
Asigne la identificación a una variable antes de mostrar la alerta para que pueda usarla en la devolución de llamada de la siguiente manera:
$(".delete").click(function() { console.log('Delete button has been clicked...'); // get the id var id = $(this).attr("id")); swal({ title: 'Are you sure?', text: "You won't be able to revert this!", type: 'warning', showCancelButton: true, confirmButtonColor: '#3085d6', cancelButtonColor: '#d33', confirmButtonText: 'Yes, delete it!' }).then(function() { console.log('Confirm button clicked...'); // use the id we declared earlier delete_post(id); swal( 'Deleted!', 'Your file has been deleted.', 'success' ); }); }); function delete_post(id) { console.log('Deleting post...', id); var info = { "delete_post_id": id }; $.post('index.php', info) .done(function(response) { console.log('Completed request...', response); if (response["error"]) { $('#error').html(response["error"]); } else { window.location = "index.php"; } }); }También agregué algo de depuración de console.log para que pueda ver lo que sucede cuando lo ejecuta en su navegador.