Остановить загрузку веб-страницы до завершения вызова JQuery AJAX?
У меня есть требования к устаревшему сайту, где я не могу изменить дизайн экранов, я не могу использовать теги без кэширования заголовка, и я должен запретить пользователю видеть кэшированные экраны после того, как они вышли из системы и нажали кнопку "Назад".
Я почти до решения (см. Код немного ниже)
Когда страница загружается, я использую функцию JQuery AJAX, чтобы вызвать веб-приложение и посмотреть, вошел ли пользователь в систему. Если нет, пользователь будет перенаправлен на экран входа в систему.
<html>
<head>
<!-- all the usual header stuff, plus links to the jQuery libaries, first script tag on page below -->
<script language = "javascript">
$.get("/acme/confirm_authentication",function(data){
if( data != "confirmed"){
location.href = "logout";
}
});
</script>
</head>
<body>
blah blah blah
</body>
</html>
Большая вещь, которая мне не нравится в этом обходном пути, состоит в том, что за долю секунды я могу просматривать содержимое до завершения функции JQuery.
Есть ли способ удержать страницу от загрузки / рендеринга, пока функция JQuery AJAX не остановится?
Спасибо
Обновление: Ответ:
Я изменил принятый ответ ниже, чтобы включить опцию "cache: false". В Firefox и Chrome кэшированные копии страницы, которые были получены с помощью кнопки "Назад", запускали бы.ajax(), но использовали бы кэшированную копию переменной "data", что давало бы мне устаревший ответ.
$.ajax({
url: "/acme/confirm_authentication",
async:false,
cache: false,
success: function(data) {
if( data != "confirmed"){
location.href = "logout";
}
}
});
1 ответ
Вы можете сделать это с ajax
функция с async
свойство установлено в false.
$.ajax({
url: "/acme/confirm_authentication",
success: function(data) {
if( data != "confirmed"){
location.href = "logout";
}
},
async:false
});