Javascript ajax调用页面onload

时间:2010-11-10 13:10:05

标签: javascript ajax

我希望在发出更新数据库的ajax调用之前完全加载页面。我可以在body onload事件中调用一个javascript函数,这样页面就完全加载了,但是我不知道如何从那里触发Ajax调用。有没有更好的方法来实现这个(在页面加载后更新数据库)? / p>

4 个答案:

答案 0 :(得分:46)

使用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>

另见:

答案 1 :(得分:5)

你可以使用jQuery为你做这件事。

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

在此处查看:

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

答案 2 :(得分:4)

或使用原型:

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

或者更好的是,将函数定义在别处而不是内联,然后:

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

您不必专门使用jQuery或Prototype,但我希望您使用某种类型的库。这两个库都将以比onload更一致的方式处理事件处理,当然这将使处理Ajax调用变得更加容易。如果必须使用body onload属性,那么您应该只能调用这些示例中引用的相同函数(onload="javascript:functionName();")。

但是,如果您的数据库更新不依赖于页面上的呈现,为什么要等到它完全加载?您可以在页面上的JavaScript末尾包含对Ajax调用函数的调用,这应该会产生几乎相同的效果。

答案 3 :(得分:0)

没有图书馆就更容易

window.onload = function() {
    // code
};