Как отправить запрос ajax до загрузки страницы? - PullRequest
2 голосов
/ 10 октября 2008

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


Предположим, что в соответствии с требованиями не должно быть прямой обработки на стороне сервера.

Ответы [ 5 ]

6 голосов
/ 10 октября 2008

Это звучит как операция, которая должна быть выполнена на сервере, прежде чем страница будет отображена. Если у кого-то отключен JavaScript, что произойдет?

2 голосов
/ 10 октября 2008

Если вы не хотите зависеть от инструментария, вы можете создать собственную функцию 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/

1 голос
/ 10 октября 2008

Почему бы не проверить, прежде чем пользователю даже дадут HTML?

Если вы просто используете статический HTML с Javascript, я бы предложил использовать JQuery и использовать $ (document) .ready ():

0 голосов
/ 10 октября 2008

Я считаю, что если вы используете встроенный JavaScript, он должен быть выполнен, как только он встретится:

<HTML><HEAD>...</HEAD>
<BODY>
<script>
document.write("This is written before anything else");
</script>
This come later.
</BODY>
</HTML>
0 голосов
/ 10 октября 2008

Я думаю, что это возможно, но это не рекомендуется. Правильнее всего сделать так, чтобы сервер полностью определил содержимое страницы еще до ее отправки.

Если вас задерживают медленные загрузки изображений или другой контент, отличный от HTML, посмотрите одну из различных библиотек JavaScript. Я всегда рекомендую jQuery , который имеет следующий синтаксис:

$(document).ready(function() {
  // The DOM is fully loaded now, but images might still be loading.
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...