закрытие бутстрапа модально … иногда не закрывается

Я открываю модальное окно начальной загрузки, чтобы показать «информационное сообщение обработки» с m_arc_dl.php, После p_archive_dl.php закончилась (обработка заканчивается) Я закрываю модальное окно.

То, что я заметил, время от времени модальное не закрывается … это, кажется, происходит, когда ответ от p_archive_dl.php это действительно быстро. Я предполагаю, может быть, это из-за того, что модал исчезает и не загружается полностью до того, как произойдет закрытый вызов?

Любые предложения, чтобы я мог предотвратить это?

// show processing message
$('#modal-ajax').load(
'/modals/m_arc_dl.php',
function() {
$(this).modal('show');
}
);

$.ajax({
type: 'post',
url: '/process/p_archive_dl.php',
data: $(form).serialize(),
dataType : 'json'
}).done(function (response) {

if (response.success)
{
// create hidden iframe with the 'src' attribute set to the file to download
var dlif = $('<iframe/>',{'src':'/showdownload.php?file='+response.file+'&files='+response.files+'&ts=1&un=1'}).hide();

// append iframe to body
$(document.body).append(dlif);
}

// close the modal
$('#modal-ajax').modal('hide');
});

1

Решение

У вас есть два асинхронных запроса, поэтому неудивительно, что иногда их успешные обратные вызовы выполняются в порядке «вы не хотите».

Вы можете либо сделать второй запрос на первый успех, либо использовать флаг, чтобы определить, $(this).modal('show'); должно быть выполнено или нет.

Пример первого подхода:

// show processing message
$('#modal-ajax').load(
'/modals/m_arc_dl.php',
function() {
$(this).modal('show');
makeRequest();
}
);

function makeRequest() {
$.ajax({
type: 'post',
url: '/process/p_archive_dl.php',
data: $(form).serialize(),
dataType: 'json'
}).done(function(response) {
if (response.success) {
// create hidden iframe with the 'src' attribute set to the file to download
var dlif = $('<iframe/>', {'src': '/showdownload.php?file=' + response.file + '&files=' + response.files + '&ts=1&un=1'}).hide();
// append iframe to body
$(document.body).append(dlif);
}
// close the modal
$('#modal-ajax').modal('hide');
});
}
2

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

Других решений пока нет …

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