SweetAlert2를 사용하여 탐지되지 않음(약속 없음) 취소
어떻게 하면 약속을 사용할 때 오류를 던지지 않고 취소 버튼을 제대로 벗어날 수 있습니까?내 코드는 필수 확인란이 있는 경보 확인을 던집니다. 코드는 사용자에게 실행되어야 하는 대로 실행되지만 콘솔 창에 다음과 같은 오류를 던집니다.
미발견(약속)
//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 업그레이드 가이드 ↗에서 해결되었습니다.
약속에 거부 처리기를 추가해야 합니다.또는 다음을 사용할 수 있습니다..catch(swal.noop)
오류를 간단히 억제하는 빠른 방법:
swal('...')
.catch(swal.noop);
PS. 사용 중인 패키지의 이름은 SweetAlert2이지 SweetAlert2가 아닙니다.향후 질문에는 더 적절한 답변을 얻을 수 있도록 언급해 주시기 바랍니다.
취소 버튼을 누르면 SweetAlert2가 결과 약속을 거부합니다.처리할 수 있습니다.
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;
}
})
만약 당신이 아무것도 할 필요가 없다면.json_data
방법을 사용할 수도 있습니다.
new Promise(function(resolve, reject) {
필요하지 않습니다.$.post()
jQuery 약속 개체를 반환합니다.
가능한 솔루션 대체물Promise.reject()
위해서new Promise()
생성자; 제거됨.then()
첫 번째 옵션으로 배치된 것.swal()
호출; 패턴이 예상되는 것 같습니다.Promise
에서 반환될preConfirm
어떤 가치가 반환될 것으로 예상되는지는 확실하지 않지만..done()
이외에json_data
.
swal({
title: "Confirm",
input: 'checkbox',
inputValue: 0,
type: "warning",
inputPlaceholder: 'I agree to <a href="#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
});
취소를 위해 조치를 취해야 합니다.
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(json_data) {
//delete item
}, function(dismiss) {
if (dismiss === 'cancel' || dismiss === 'close') {
// ignore
}
})
캐치(swal.noop)를 추가하면 이 문제가 해결됩니다.
예:
swal({
}).then(function() {
}).catch(swal.noop);
언급URL : https://stackoverflow.com/questions/39321621/uncaught-in-promise-cancel-using-sweetalert2
'programing' 카테고리의 다른 글
ID가 배열에 있는 mysql (0) | 2023.08.20 |
---|---|
SELECT FROM DUAL로 여러 행이 가능합니까? (0) | 2023.08.20 |
Jquery UI 대화 상자에서 "확인" 대화 상자를 구현하는 방법은 무엇입니까? (0) | 2023.08.20 |
django-el-pagination에 대해 다중 페이지화(ajax)가 작동하지 않습니다. (0) | 2023.08.20 |
mockMvc로 응답체에서 JSON을 확인하는 방법 (0) | 2023.08.20 |