页面加载时的Javascript ajax调用

页面加载时的Javascript ajax调用,javascript,ajax,Javascript,Ajax,我希望在发出ajax调用以更新数据库之前完全加载页面。我可以在body onload事件中调用javascript函数,这样页面就可以完全加载,但我不确定如何从那里触发Ajax调用。有没有更好的方法来实现这一点(页面加载后更新数据库)?使用javascript库真的很容易,例如,使用jQuery,您可以编写: $(document).ready(function(){ $.ajax({ url: "database/update.html", context: document.

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

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

函数updateDB(){
var xhr=new XMLHttpRequest();
open(“POST”,“database/update.html”,true);
xhr.send(空);
/*忽略结果*/
}
另见:


您可以使用jQuery为您完成这项工作

 $(document).ready(function() {
   // put Ajax here.
 });
请在此处查看:

或使用原型:

Event.observe(this, 'load', function() { new Ajax.Request(... ) );
或者更好的方法是在别处定义函数,而不是内联,然后:

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


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

如果没有库,则更容易实现

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

DB更新与onload page事件严格相关?或者,它可以在服务器开始发送页面时执行?是的,这很好,但是我可以不使用jQuery来执行吗?
$。ready
相当于
domcontentload
而不是
load
。在这一点上,您的jquery/vanilla比较可能会产生误导。您的普通版本应该使用
文档来侦听事件。addEventListener
而不是
onload
属性,这被认为是一种非常糟糕的做法。仅供参考:弃用注意:从jQuery 3.0开始,jqXHR.success()、jqXHR.error()和jqXHR.complete()回调将被删除。您可以改用jqXHR.done()、jqXHR.fail()和jqXHR.always()。