在页面加载前如何提交ajax请求

3
我希望通过ajax请求检查用户的登录状态。根据用户是否已登录,我想显示用户名/密码输入或用户名。目前该请求在body.onload上发送,并显示进度指示器,直到响应到达。有更好的方法吗?
假设要求规定不应进行直接服务器端处理。

如果没有服务器端处理,你如何验证他们的登录? - Neall
5个回答

6
这听起来像是应该在服务器上进行操作,然后再呈现页面。如果有人禁用了JavaScript,会发生什么?

可以做到,只是与惯例有些不同。如果他们没有启用JavaScript,他们什么也看不到(因为没有加载数据)。但是,你必须非常小心地处理这种方法。 - Steve g
是的,一旦涉及到安全性/登录方面的事情要用JavaScript来处理时,我总是会警惕起来。 - swilliams
+1 最好在代码后台执行安全检查,以确定页面的初始呈现方式。 - Kon

2
如果您不想依赖工具包,可以创建自己的DOMReady函数,看起来有点像这样:
/* 用法: DOMReady(ajaxFunc); */ function DOMReady(f) { if (!document.all) { document.addEventListener("DOMContentLoaded", f, false); } else { if (document.readystate == 'complete') { window.setTimeout(f, 0); } else { //只有在所有其他方法都失败时才将事件添加到onload中 attachEvent(window, "load", f); } } }
或者使用更复杂的解决方案:http://snipplr.com/view/6029/domreadyjs/

1

在用户获得HTML之前,为什么不进行检查呢?

如果您只是运行带有JavaScript的静态HTML,则建议使用JQuery并使用$(document).ready():


0

我认为这是可能的,但并不推荐这样做。正确的做法是在服务器完全确定页面内容之前就将其发送。

如果您被缓慢的图像下载或其他非HTML内容所困扰,请查看各种JavaScript库之一。我总是推荐jQuery,它具有以下语法:

$(document).ready(function() {
  // The DOM is fully loaded now, but images might still be loading.
});

0

我相信如果你使用内联JavaScript,它应该在遇到时立即执行:

<HTML><HEAD>...</HEAD>
<BODY>
<script>
document.write("This is written before anything else");
</script>
This come later.
</BODY>
</HTML>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接