2008-10-10 10 views
2

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


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

+0

Если у вас нет обработки на стороне сервера, как вы можете подтвердить свой логин? – Neall 2008-10-10 14:39:59

ответ

2

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

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

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

6

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

+0

Это можно сделать, это немного отличается от того, что было нормой. Если у них нет javascript, они ничего не видят (потому что данные не загружаются). Но да, вы должны быть очень осторожны с этим типом подхода. – 2008-10-10 14:15:22

0

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

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

$(document).ready(function() { 
    // The DOM is fully loaded now, but images might still be loading. 
}); 
0

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

<HTML><HEAD>...</HEAD> 
<BODY> 
<script> 
document.write("This is written before anything else"); 
</script> 
This come later. 
</BODY> 
</HTML> 
Смежные вопросы