Я хочу, чтобы страница полностью загружалась, прежде чем вызывать вызов ajax для обновления базы данных. Я могу вызвать функцию javascript в событии onload body, так что страница полностью загружена, но я не уверен, как вызвать вызов Ajax оттуда. Есть ли лучший способ добиться этого (Upadating database после загрузки страницы)?
Javascript ajax вызов на странице при загрузке
Ответ 1
Это очень просто, используя библиотеку JavaScript, например. используя jQuery, вы можете написать:
$(document).ready(function(){
$.ajax({ url: "database/update.html",
context: document.body,
success: function(){
alert("done");
}});
});
Без jQuery простейшая версия может быть следующей, но она не учитывает различия браузера или обработку ошибок:
<html>
<body onload="updateDB();">
</body>
<script language="javascript">
function updateDB() {
var xhr = new XMLHttpRequest();
xhr.open("POST", "database/update.html", true);
xhr.send(null);
/* ignore result */
}
</script>
</html>
См. также:
Ответ 2
Вы можете использовать jQuery для этого.
$(document).ready(function() {
// put Ajax here.
});
Проверьте это здесь:
http://docs.jquery.com/Tutorials:Introducing_%24%28document%29.ready%28%29
Ответ 3
Или с прототипом:
Event.observe(this, 'load', function() { new Ajax.Request(... ) );
Или лучше, определите функцию в другом месте, а не в строке, затем:
Event.observe(this, 'load', functionName );
Вам не обязательно использовать jQuery или Prototype, но я надеюсь, что вы используете какую-то библиотеку. Любая библиотека будет обрабатывать обработку событий более последовательно, чем onload, и, конечно же, будет намного проще обрабатывать вызов Ajax. Если вы должны использовать атрибут onload для тела, вы должны просто иметь возможность вызывать ту же функцию, что и ссылки в этих примерах (onload="javascript:functionName();"
).
Однако, если ваше обновление базы данных не зависит от рендеринга на странице, зачем ждать ее полной загрузки? Вы можете просто включить вызов функции Ajax-вызова в конце JavaScript на странице, что должно дать почти такой же эффект.
Ответ 4
Еще проще обойтись без библиотеки
window.onload = function() {
// code
};