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

时间:2008-10-10 14:10:44

标签: javascript ajax

我想通过ajax请求检查用户的登录状态。根据用户登录的情况,我想显示用户名/密码输入或用户名。目前,请求在body.onload上发送,并显示一个prgoress指示符,直到响应到达。还有更好的方法吗?


我们假设需求声明不应该直接进行服务器端处理。

5 个答案:

答案 0 :(得分:6)

这听起来像是在呈现页面之前应首先在服务器上完成的操作。如果某人禁用了javascript,会发生什么?

答案 1 :(得分:2)

如果您不想依赖工具包,可以创建自己的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/

答案 2 :(得分:1)

为什么不在用户获得html之前检查?

如果您只是使用Javascript运行静态HTML,我建议使用JQuery并使用$(文档).ready():

答案 3 :(得分:0)

我认为这应该是可能的,但不建议这样做。正确的做法是让服务器在发送之前完全确定页面的内容。

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

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

答案 4 :(得分:0)

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

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