Javascript AJAX вызов на странице загрузки - PullRequest
19 голосов
/ 10 ноября 2010

Я хочу, чтобы страница полностью загрузилась, прежде чем выполнить ajax-вызов для обновления базы данных. Я могу вызвать функцию javascript в событии onload тела, чтобы страница была полностью загружена, но я не уверен, как оттуда вызвать вызов Ajax. Есть ли лучший способ добиться этого (обновление базы данных после загрузки страницы)?

Ответы [ 3 ]

47 голосов
/ 10 ноября 2010

Это действительно легко, используя библиотеку 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>

См. Также:

5 голосов
/ 10 ноября 2010

Вы можете использовать jQuery, чтобы сделать это за вас.

 $(document).ready(function() {
   // put Ajax here.
 });

Проверьте это здесь:

http://docs.jquery.com/Tutorials:Introducing_%24%28document%29.ready%28%29

4 голосов
/ 10 ноября 2010

Или с прототипом:

Event.observe(this, 'load', function() { new Ajax.Request(... ) );

Или, лучше, определить функцию в другом месте, а не в строке, тогда:

Event.observe(this, 'load', functionName );

Вам не нужно специально использовать jQuery или Prototype, но я надеюсь, что вы используете какую-то библиотеку. Любая из библиотек будет обрабатывать события более согласованным образом, чем onload, и, конечно, значительно упростит обработку вызова Ajax. Если вы должны использовать атрибут body onload, вы должны просто вызывать ту же функцию, на которую ссылаются эти примеры (onload="javascript:functionName();").

Однако, если обновление вашей базы данных не зависит от визуализации на странице, зачем ждать, пока она полностью загрузится? Вы можете просто включить вызов функции Ajax-вызова в конце JavaScript на странице, что должно дать почти такой же эффект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...