javascript — данные отправляются даже при нажатии кнопки отмены в sweetalert2

Я смог отправить данные при нажатии кнопки подтверждения.
однако, когда кнопка отмены нажата sweetalert2 показывает как это успешно вставил данные.
back-end показывает пустую строку. (в таблице базы данных)
как проверить, когда я нажал кнопку отмены, чтобы не отправлять данные на сервер.


    function inputPass(complaintID) { // complaint id pass is ok.
swal({
text: 'Input comment message',
input: 'textarea',
showCancelButton: true,
}).then(function(sample_text) {
console.log(sample_text);
if(sample_text === '') { // problem is here.
swal({
type: 'warning',
html: 'cannot proceed without input'
});
} else {
console.log(sample_text);
$.ajax({
type: "POST",
url: "../ajax/ajax_active_deact.php?type=complaint_answered",
data: {complaintID: complaintID, sampleText: sample_text}
}).done(function (res) {
if(!res) {
swal({
type: 'error',
html: 'insert the valid text'
});
} else {
swal({
title: 'done',
text: 'all right',
type: 'success',
allowOutsideClick: false,
confirmButtonText: 'Ok'
});
}
});
}
});
}

код PHP AJAX

function complaint_answered() {
include_once('../backend/ConsumerComplaint.php');
$con_complaint = new ConsumerComplaint();
$res = $con_complaint>mark_as_answered($_POST['complaintID'],$_POST['sampleText']);
echo $res;
}

Это моя классовая функция

    function mark_as_answered($id, $comment) {
//var_dump($comment);
$val = $comment['value']; // $comment is a associative array, with the key of 'value'
$sql = "UPDATE c_consumer_complaint SET `status` = 'answered', `update` = '$val'
WHERE  complaint_id = '$id' ";
$res = $this->conn->query($sql);
return $res;
}

  • изображение, когда я нажал кнопку отмены на сетевой панели в Chrome
    введите описание изображения здесь

  • образ консоли
    введите описание изображения здесь

  • изображение почтовых данных в хроме
    введите описание изображения здесь

Я новичок в разработке и не могу обойти, как решить эту проблему.
пожалуйста, кто-нибудь может дать мне то, что я делаю не так здесь.
Thnks!

1

Решение

Вы получаете только result.value если пользователь нажал Ok, вы можете проверить, есть ли значение, и если оно пустое, вы увидите свое сообщение об ошибке. Если нет значения, ничего не происходит.

Snippet:

    swal({
text: 'Input comment message',
input: 'textarea',
showCancelButton: true,
}).then(function(result) {
if(result.value) {
$.ajax({
type: "POST",
url: "../ajax/ajax_active_deact.php?type=complaint_answered",
data: {complaintID: complaintID, sampleText: result.value}
}).done(function (res) {
if(!res) {
swal({
type: 'error',
html: 'insert the valid text'
});
} else {
swal({
title: 'done',
text: 'all right',
type: 'success',
allowOutsideClick: false,
confirmButtonText: 'Ok'
});
}
});
} else if (result.value === "") {
swal({
type: 'warning',
html: 'cannot proceed without input'
});
}
});
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/sweetalert2.all.min.js"></script>
1

Другие решения

Похоже, образец текста всегда установлен в массив. Я бы попробовал изменить оператор if

if(sample_text === '') { // problem is here.
swal({
type: 'warning',
html: 'cannot proceed without input'
});
} else {
console.log(sample_text);

что-то вроде

if(sample_text['dismiss'] == 'cancel') { // problem is here.
swal({
type: 'warning',
html: 'cannot proceed without input'
});
} else {
console.log(sample_text);
0

По вопросам рекламы [email protected]