Итак, в основном мы используем SweetAlert2 на нашем веб-сайте. Все работает хорошо в различных веб-браузерах, таких как Chrome, Firefox, Edge, кроме Inte rnet Explorer.
Сначала - как почти все знают - SweetAlert2 использует стрелочные функции, которые не поддерживаются Inte rnet Проводник. Однако, как нам также известно, Inte rnet Explorer не поддерживает стрелочные функции, поэтому мы решили заменить стрелочную функцию функцией classi c.
From:
Swal.fire({
title: 'Success',
html: message,
icon: 'success'
}).then((result) => {
window.location.reload();
});
Мы получить к этому:
Swal.fire({
title: 'Success',
html: message,
icon: 'success'
}).then(function (result) {
window.location.reload();
});
И да, код сверху заставляет его работать в Inte rnet Explorer. Мы были счастливы, пока не осознали, что такой код также приводит к проблемам с AJAX POST-запросами, поэтому почти все функции в приложении перестали работать.
В противном случае - если мы вернемся к функциям стрелок в методе вызова SweetAlert2 - тогда все наши ajax почтовые запросы будут работать без каких-либо проблем.
@ edit => Подробнее о сценарии
Итак, после вызова ajax - почтовые данные отправляются в файл php, который проверяет, были ли отправлены почтовые данные с помощью метода isset (). Если это так, то он выполняет запрос к базе данных, иначе он возвращает код ошибки.
В сценарии, когда мы используем стрелочные функции - isset (), проверяющий данные сообщения, возвращает истину, и есть запрос.
В сценарии, когда мы не используем функцию стрелки - isset (), проверяющая данные сообщения, возвращает false, а вызов ajax возвращает код ошибки.
Таким образом, похоже, что данные сообщения из формы не отправляются .
@ edit2 - добавление js кода функции в ссылку ниже
$('.form-ajax').on('submit', function(event) {
event.preventDefault();
var link = $(this).attr('action');
var redirect = false;
var callback = false;
// Sweet Ajax
var confirm_question = false;
var success_msg = false;
if ($(this).attr('redirect') !== undefined) { redirect = $(this).attr('redirect'); }
if ($(this).attr('callback') !== undefined) { callback = $(this).attr('callback'); }
// Sweet Ajax
if ($(this).attr('confirm') !== undefined) { confirm_question = $(this).attr('confirm'); }
if ($(this).attr('success') !== undefined) { success_msg = $(this).attr('success'); }
if (confirm_question !== false) {
// Pytanie zostało określone
Swal.fire({
title: 'Potwierdzenie',
html: confirm_question,
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Potwierdź',
cancelButtonText: 'Anuluj'
}).then(function (result) {
if (result.value) {
$.ajax({
url: link,
type: 'POST',
data: $(this).serialize(),
success: function(result) {
if (result == 'ok') {
var komunikat = 'Operacja została wykonana poprawnie.';
Swal.fire({
title: 'Sukces',
html: komunikat,
icon: 'success'
}).then(function (result) {
if (redirect) {
window.location.replace(redirect);
} else {
window.location.reload();
}
});
} else {
if (result == '405') {
if (callback) {
$('#' + callback).html('<i class="fas fa-exclamation-circle"></i> Wystąpił błąd1. Odśwież stronę i spróbuj ponownie.');
} else {
// swal fire
Swal.fire({
title: 'Błąd',
html: 'Wystąpił błąd. Odśwież stronę i spróbuj ponownie.',
icon: 'error'
});
}
}
}
}
});
}
});
}
});
Выше функция возвращает "Wyst "pił błąd1. Odśwież stronę i spróbuj ponown ie. " если мы не используем стрелочные функции, это означает, что результат возвращает 405.
Мы застряли и не знаем, что еще мы можем попробовать?