【问题标题】:How do i submit an ajax request before the page is loaded如何在页面加载之前提交 ajax 请求
【发布时间】:2008-10-11 01:49:05
【问题描述】:

我想通过 ajax 请求检查用户的登录状态。根据用户是否登录,我想显示用户名/密码输入或用户名。目前,请求在 body.onload 上发送,并且在响应到达之前会显示一个进度指示器。有没有更好的办法?


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

【问题讨论】:

  • 如果你没有服务器端处理,你如何验证他们的登录?

标签: javascript ajax


【解决方案1】:

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

【讨论】:

  • 可以做到,只是与以往的标准略有不同。如果他们没有启用 javascript,他们什么也看不到(因为没有数据被加载)。但是,是的,您必须非常小心这种方法
  • 是的,当使用 javascript 完成与安全/登录相关的任何事情时,我的脑海中总会出现危险信号。
  • +1 最好在代码隐藏中执行安全检查,以了解页面最初呈现的方式。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

        【解决方案5】:

        我相信如果你使用内联javascript,应该是一遇到就执行:

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

        【讨论】:

          猜你喜欢
          • 2020-09-07
          • 1970-01-01
          • 1970-01-01
          • 2012-04-12
          • 1970-01-01
          • 2014-12-01
          • 1970-01-01
          • 1970-01-01
          • 2021-08-02
          相关资源
          最近更新 更多