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