Saltar al contenido

Cancelación no detectada (en promesa) usando SweetAlert2

Anduvimos buscando por el mundo on line para darte la solución a tu dilema, en caso de alguna difcultad déjanos tu duda y te responderemos con mucho gusto.

Solución:

Actualización (enero de 2017): Este problema se solucionó en v7: guía de actualización de v7 ↗


Debe agregar un controlador de rechazo a la Promesa. Como alternativa, puede utilizar .catch(swal.noop) como una forma rápida de simplemente suprimir los errores:

swal('...')
  .catch(swal.noop);

PD. el paquete que estás usando se llama SweetAlert2, no SweetAlert. En futuras preguntas, menciónelo para que pueda obtener respuestas más relevantes.

SweetAlert2 rechaza la promesa de resultado cuando se presiona el botón cancelar. Puedes manejar eso:

swal(
  …
).then(function(json_data) 
  …
, function(dismiss) 
  if (dismiss === 'cancel')  // you might also handle 'close' or 'timer' if you used those
    // ignore
   else 
    throw dismiss;
  
)

Si no necesita hacer nada con el json_datatambién puede utilizar el catch método.

new Promise(function(resolve, reject) { no es necesario. $.post() devuelve un objeto de promesa jQuery.

Posibles sustitutos de la solución Promise.reject() por new Promise() constructor; remoto .then() que se colocó como opción a primera swal() llamar; patrón parece esperar un Promise para ser devuelto de preConfirmaunque no estoy seguro de qué valor se espera que se devuelva de .done() otro que json_data.

swal(
  title: "Confirm",
  input: 'checkbox',
  inputValue: 0,
  type: "warning",
  inputPlaceholder: 'I agree to ',
  showCancelButton: true,
  confirmButtonText: 'Confirm',
  showLoaderOnConfirm: true,
  preConfirm: function(result) 
      if (result) 
        return $.post("my.php", 
          Data: data
        )
        .done(
          function(json_data) 
            var data_array = $.parseJSON(json_data);
            var moreDetails = '';
            var resulting = 'error';
            var details = "Transaction Declined"
            if (data_array["trxApproved"] == true) 
              resulting = 'success';
              details = "Confirmed"
              moreDetails = "
Approved" + data_array["approved"] + "" + "
Details Code: " + data_array["detailsCode"] + ""; swal( type: resulting, title: details, html: "

Details:

" + data_array["messagetext"] + moreDetails ); ); else return Promise.reject('You must agree to our Terms & Conditions '); , allowOutsideClick: false );

Aquí tienes las reseñas y valoraciones

Finalizando este artículo puedes encontrar las acotaciones de otros usuarios, tú todavía eres capaz mostrar el tuyo si dominas el tema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *