Я хочу проверить статус входа пользователя с помощью запроса ajax. В зависимости от того, вошел ли пользователь в систему, я хочу отобразить либо ввод имени пользователя / пароля, либо имя пользователя. В настоящее время запрос отправляется на body.onload, и пока не будет получен ответ, отображается индикатор prgoress. Есть ли способ лучше?
Предположим, что в требованиях указано, что прямой обработки на стороне сервера быть не должно.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Почему бы не проверить, прежде чем пользователю будет предоставлен HTML-код?
Если вы просто используете статический HTML с Javascript, я бы предложил использовать JQuery и использовать $ (document) .ready ():
Похоже, что операция должна быть выполнена на сервере до того, как страница будет отрисована. Что произойдет, если у кого-то отключен javascript?
Это можно сделать, просто это немного отличается от того, что было нормой. Если у них не включен javascript, они ничего не видят (потому что данные не загружаются). Но да, вы должны быть очень осторожны с таким подходом.
Да, у меня в голове всегда срабатывают красные флажки, когда все, что связано с безопасностью / входом в систему, выполняется с помощью javascript.
+1 Проверку безопасности, которая показывает, как страница изначально отображается, лучше всего выполнять в коде программной части.
Я думаю, это возможно, но не рекомендуется. Правильнее всего сделать так, чтобы сервер полностью определил содержимое страницы еще до ее отправки.
Если вас задерживает медленная загрузка изображений или другого содержимого, отличного от HTML, попробуйте одну из различных библиотек JavaScript. Я всегда рекомендую jQuery, который имеет следующий синтаксис:
$(document).ready(function() {
// The DOM is fully loaded now, but images might still be loading.
});
Я считаю, что если вы используете встроенный javascript, он должен выполняться, как только он встречается:
<HTML><HEAD>...</HEAD>
<BODY>
<script>
document.write("This is written before anything else");
</script>
This come later.
</BODY>
</HTML>
Если вы не хотите зависеть от набора инструментов, вы можете создать свою собственную функцию DOMReady, которая выглядит примерно так:
/* Usage: DOMReady(ajaxFunc); */
function DOMReady(f) {
if (!document.all) {
document.addEventListener("DOMContentLoaded", f, false);
} else {
if (document.readystate == 'complete') {
window.setTimeout(f, 0);
}
else {
//Add event to onload just if all else fails
attachEvent(window, "load", f);
}
}
}
Или для более сложного решения: http://snipplr.com/view/6029/domreadyjs/
Если у вас нет обработки на стороне сервера, как вы проверяете их логин?