【发布时间】:2008-10-11 01:49:05
【问题描述】:
我想通过 ajax 请求检查用户的登录状态。根据用户是否登录,我想显示用户名/密码输入或用户名。目前,请求在 body.onload 上发送,并且在响应到达之前会显示一个进度指示器。有没有更好的办法?
让我们假设需求声明不应该有直接的服务器端处理。
【问题讨论】:
-
如果你没有服务器端处理,你如何验证他们的登录?
标签: javascript ajax
我想通过 ajax 请求检查用户的登录状态。根据用户是否登录,我想显示用户名/密码输入或用户名。目前,请求在 body.onload 上发送,并且在响应到达之前会显示一个进度指示器。有没有更好的办法?
让我们假设需求声明不应该有直接的服务器端处理。
【问题讨论】:
标签: javascript ajax
这听起来像是应该在页面呈现之前首先在服务器上完成的操作。如果有人禁用了 javascript,会发生什么?
【讨论】:
如果您不想依赖工具包,您可以创建自己的 DOMReady 函数,如下所示:
/* 用法:DOMReady(ajaxFunc); */ 函数 DOMReady(f) { 如果(!document.all){ document.addEventListener("DOMContentLoaded", f, false); } 别的 { if (document.readystate == '完成') { window.setTimeout(f, 0); } 别的 { // 添加事件到 onload 仅当所有其他方法都失败时 附加事件(窗口,“加载”,f); } } }或者对于更复杂的解决方案:http://snipplr.com/view/6029/domreadyjs/
【讨论】:
为什么不在给用户 html 之前检查?
如果您只是运行带有 Javascript 的静态 HTML,我建议您使用 JQuery 并使用 $(document).ready():
【讨论】:
我认为这应该是可能的,但不建议这样做。正确的做法是在页面发送之前让服务器完全确定页面的内容。
如果您被缓慢的图像下载或其他非 HTML 内容所困扰,请查看各种 JavaScript 库之一。我总是推荐jQuery,它的语法如下:
$(document).ready(function() {
// The DOM is fully loaded now, but images might still be loading.
});
【讨论】:
我相信如果你使用内联javascript,应该是一遇到就执行:
<HTML><HEAD>...</HEAD>
<BODY>
<script>
document.write("This is written before anything else");
</script>
This come later.
</BODY>
</HTML>
【讨论】: