提问人:Manu 提问时间:10/10/2008 最后编辑:Manu 更新时间:10/11/2008 访问量:5541
如何在页面加载之前提交ajax请求
How do i submit an ajax request before the page is loaded
问:
我想通过ajax请求检查用户的登录状态。根据用户是否登录,我想显示用户名/密码输入或用户名。目前,请求在 body.onload 上发送,并显示一个 prgoress 指示器,直到响应到达。有没有更好的方法?
假设需求声明不应有直接的服务器端处理。
答:
1赞
Steve g
10/10/2008
#1
为什么不在给用户提供 html 之前进行检查呢?
如果您只是使用Javascript运行静态HTML,我建议使用JQuery并使用$(document).ready():
6赞
swilliams
10/10/2008
#2
这听起来像是在呈现页面之前应该首先在服务器上完成的操作。如果有人禁用了 javascript,会发生什么?
评论
0赞
Steve g
10/10/2008
这是可以做到的,只是与常态略有不同。如果他们没有启用 javascript,他们看不到任何内容(因为没有加载任何数据)。但是,是的,您必须非常小心地使用这种方法
0赞
swilliams
10/10/2008
是的,当任何与安全/登录相关的事情都是用 JavaScript 完成的时,我的脑海中总是会出现危险信号。
0赞
Kon
10/10/2008
+1 在代码隐藏中,最好执行安全检查以显示页面的初始呈现方式。
0赞
Neall
10/10/2008
#3
我认为这应该是可能的,但不建议这样做。正确的做法是让服务器在发送页面之前完全确定页面的内容。
如果您被缓慢的图像下载或其他非 HTML 内容所困扰,请查看各种 JavaScript 库之一。我总是推荐jQuery,它的语法如下:
$(document).ready(function() {
// The DOM is fully loaded now, but images might still be loading.
});
0赞
James Curran
10/10/2008
#4
我相信如果你使用内联javascript,它应该在遇到时立即执行:
<HTML><HEAD>...</HEAD>
<BODY>
<script>
document.write("This is written before anything else");
</script>
This come later.
</BODY>
</HTML>
2赞
Eric Wendelin
10/11/2008
#5
如果你不想依赖一个工具包,你可以创建自己的 DOMReady 函数,它看起来像这样:
/* Usage: DOMReady(ajaxFunc); */ function DOMReady(f) { if (!document.all) { document.addEventListener("DOMContentLoaded", f, false); } else { if (document.readystate == 'complete') { window.setTimeout(f, 0); } else { //Add event to onload just if all else fails attachEvent(window, "load", f); } } }
或者对于更复杂的解决方案:http://snipplr.com/view/6029/domreadyjs/
评论