У меня есть диалоговое окно для отображения, перед созданием диалогового окна, которое будет отображаться. Я хотел бы отобразить счетчик на экране, говорящий о загрузке. Мой код на самом деле выглядит ниже.Невозможно отобразить прядильщик перед диалоговым окном проецирования
var $loading = $('#loadingDiv');
$loading.show();
console.log("spinner displayed in build");
loadBuildsList(); // Just to give 6 seconds delay
$("#buildSelectionDialog").dialog("open"); // display dialog
console.log("spinner hidden in build");
//$loading.hide()
Теперь проблема, с которой я столкнулся, заключается в том, что на экране перед диалоговым окном должен появиться загрузочный div. Но на самом деле одновременно появляются диалоговое окно и прядильщик. Во время отладки в браузере, если я введу точку прерывания в строке loadBuildsList();
, показания счетчика покажутся перед диалоговым окном, и если я позволю коду работать без каких-либо точек останова, оба они появляются одновременно. Вышеупомянутая проблема напечатайте spinner displayed in build
в консоли, останавливается в течение 6 секунд, а затем печатает spinner hidden in build
. Но одновременно отображается как прядильщик, так и диалоговое окно. Я использую запрос ajax для запуска 6-секундной задержки. Может кто-нибудь рассказать, как я могу заставить код работать так, как мне нужно?
My loadingDiv
выглядит следующим образом.
<div id="loadingDiv" style="top:30%; left:30%; position:fixed; width:200px; height:200px; z-index:9999999999; display:None">
<img width=150px height=150px src="ajax_loader.gif"/>
<p>This may take few seconds</p></div>
функция loadBuildsList выглядит, как показано ниже
function loadBuildsList() {
$.ajax({
async:false,
url:"ajax_test.php"
});
}
Как вводится 6-секундная задержка? Если это 'setTimeout',' setInterval' или AJAX запрос в 'loadBuildsList', то он будет запускаться асинхронно, поэтому диалог откроется сразу же после его синхронного запуска. Вам нужно будет открыть диалог внутри обратного вызова timout/interval/AJAX, чтобы это произошло потом. – Brian
Да, это запрос ajax. Также запрос ajax является синхронным. Я попытался отобразить и спрятать счетчик, используя 'beforeSend',' success' и 'complete', но результат был таким же, как прядильщик, так и диалог появляются одновременно. Я даже использовал 'ajaxStart' и' ajaxStop', к сожалению, для них они не работали. –
добавить 'loadBuildsList()' code –