Saltar al contenido

No detectado (en promesa) cancelar usando SweetAlert2

Solución:

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


Debe agregar un controlador de rechazo a Promise. Alternativamente, puede usar .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_data, también puede usar 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 una opción a la primera swal() llamada; El patrón parece esperar un Promise para ser devuelto de preConfirm, aunque no está seguro de qué valor se espera que se devuelva .done() otro que json_data.

swal({
  title: "Confirm",
  input: 'checkbox',
  inputValue: 0,
  type: "warning",
  inputPlaceholder: 'I agree to <a href="https://foroayuda.es/#blahblahMore"></a>',
  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 = "<br>Approved<b>" + data_array["approved"] + "</b>" +
                "<br>Details Code: <b>" + data_array["detailsCode"] + "</b>";
            }
            swal({
              type: resulting,
              title: details,
              html: "<h1>Details: </h1>" + data_array["messagetext"] + moreDetails
            });
          }
        );
      } else {
          return Promise.reject('You must agree to our Terms & Conditions ');
      }
  },
  allowOutsideClick: false
});
¡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 *