javascript - 未捕获( promise 中)使用SweetAlert2取消

标签 javascript jquery ajax sweetalert sweetalert2

使用 promise 时,如何正确地退出取消按钮而不会引发错误?我的代码会发出带有确认复选框的警报确认。该代码按应对用户执行的方式执行,但会在控制台窗口中引发错误:

Uncaught (in promise) cancel


//validation logic all passes...Now proceed to...

 else
    {

//determine and parse Discounts

 var myLookup = document.getElementsByName("myLookup")[0].value;
$.post( "findthem.php", {myLookup: myLookup })
  .done(function(json_data){
     var theResponse1 = $.parseJSON(json_data);
     myDiscountRate = theResponse1['ourDiscountFound'];

    }).then( function(callback){

    priceRate = priceRate * (1 - (.01 * myDiscountRate));
    newRate = priceRate.toFixed(2);
}

swal({
  title: "Confirm",
  input: 'checkbox',
  inputValue: 0,
  type: "warning",
  inputPlaceholder: 'I agree to <a href="#blahblahMore"></a> Your new Rate is :'+newRate,
  showCancelButton: true,
  confirmButtonText: 'Confirm',
  showLoaderOnConfirm: true,
  preConfirm: function(result) {
    return new Promise(function(resolve, reject) {
      if (result) {
        $.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
            });
          }
        );
        resolve();
      } else {
          reject('You must agree to our Terms & Conditions ');
      }
    });
  },
  allowOutsideClick: false
  }).then(function(json_data) {

  })
});

最佳答案

更新(2017年1月):此问题已在v7中修复:v7 upgrade guide ↗

您需要向Promise添加拒绝处理程序。另外,您可以使用.catch(swal.noop)作为简单地排除错误的快速方法:

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

PS。您正在使用的软件包称为SweetAlert 2 ,而不是SweetAlert。在以后的问题中,请提及它,以便您获得更多相关的答案。

关于javascript - 未捕获( promise 中)使用SweetAlert2取消,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50023377/

相关文章:

javascript - highcharts minPointLength 不适用于非堆叠条形图

javascript - tablesort.js 如何创建排序指示箭头

Javascript,检查时间戳是否从现在开始超过 6 小时

jquery - 如何更改下拉菜单响应式 Bootstrap 的宽度

jquery - 使用 CSS 动画 <image> svgs?

ajax - 0 的 HTTP 状态代码有什么意义吗?

javascript - 当浏览器检索缓存的 html 页面时,JavaScript 会再次运行吗?

javascript - 如何将行号插入到 ajax 函数中?

javascript - 如何将数组添加到数组对象

javascript - 在 Vue 中恢复对数组的更改