【问题标题】:Page Load - Force Refresh in classic asp?页面加载 - 在经典 asp 中强制刷新?
【发布时间】:2009-05-12 07:45:34
【问题描述】:

主题说了算。短版:我需要一种方法来强制刷新页面仅在第一个页面加载。在 asp.net 中会很容易,但我不知道如何在经典 asp 中进行。

更长的版本:我正在尝试更新一个相当大的应用程序,它的一个问题是当您登录时,它还没有将必要的信息存储到会话中,除非您单击一些特定按钮或刷新页面...当客户尝试浏览页面时会导致问题。

我可以跟踪会话并手动设置它们,但我已经失败了几个小时,所以强制刷新会容易得多。如果只有一种方法可以检测初始页面加载,那么我就不会导致循环。重定向也是不可能的,因为应用程序的代码太多(所有这些实际上都没有注释且杂乱无章),我无法看到它实际上是如何构建所有验证校验和等的。

编辑:感谢您的回复,并对迟到的答复表示歉意。从你们那里得到了一些好主意。 :)

【问题讨论】:

    标签: asp-classic refresh pageload


    【解决方案1】:
    1. 检查会话 cookie 是否是首次加载(true = 之前已加载,false = 首次加载)。

    2. 一个。如果false,则添加一个将页面重新加载到响应中的js,并将cookie设置为true
      湾。如果true,什么都不做。页面已重新加载。

    只要用户不断更新会话,这应该只会使第一次加载立即重新加载。

    编辑: 作为对评论的回应,以下是一个会导致客户端页面重新加载的 javascript 示例。据我所知,这是独立于浏览器的:

    <script type="text/javascript">window.reload();</script>
    

    (我承认这看起来有点像 hack,但它会起作用。可能有其他方法可以使页面重新加载,而无需发送额外的 javascript 命令,但我不知道任何经典 ASP。)

    【讨论】:

    • 嘿,把这个作为选择的答案。起初我有点反对使用会话,因为它在服务器上放置了工作负载,并且该页面同时被相对多人使用。但这无疑是最简单的回应。无论如何,我有点害怕脚本,因为我没有足够的经验知道哪些脚本可能不适用于所有浏览器/设置,并且页面需要尽可能普遍兼容。
    • 我相信 可以在任何浏览器中工作 - 至少我无法找到任何暗示它的信息不会。
    • 编辑了我的帖子以包含它=)
    【解决方案2】:

    尝试以下 3 个步骤:

    1. 添加一个名为 firstload 在表单标签内并将其默认值设置为“true”
    2. 为页面添加一个javascript方法 在 Window.Onload() 期间执行。 javascript 应该检查 firstload 文本框的值和 if 其“true”,重新加载页面,将参数附加到查询字符串 (?reloaded=true)
    3. 在 服务器端代码,检查重新加载的查询字符串是否为真。如果是,那么 将 firstload 的值设置为“false”。

    【讨论】:

      【解决方案3】:

      只需在您的应用程序中添加一个新页面,登录后重定向该页面.. 我的意思是,当客户端在 login.asp 中完成登录作业时。重定向 login2.asp.. 将 login2.asp 内容设置为一个简单的脚本..

      <script type="text/javascript">window.location.href="home.asp"</script>
      

      【讨论】:

        【解决方案4】:

        使用 VBScript。

        您可以通过重定向到自身并使用 querystring 变量来重新加载页面:

        <%
          Dim reload: reload = Request.Querystring("re") 
          If reload = "" Then
            Response.Redirect("samepage.asp?re=true")
          End If
        %>
        

        作为替代方案,您可以设置一个 session 变量并检查它:

        <%
          If Session("reload") = "" Then
            Session("reload") = "true"
            Response.Redirect("samepage.asp")
          End If
        %>
        

        【讨论】:

          【解决方案5】:

          如果说查询字符串参数 'reloaded' == true,则在 jQuery 中使用 window.location="currentUrl?reloaded=true" 在文档就绪时重新加载页面。

          类似这样的:

          <script type="text/javascript">
              $(document).ready(function() {
                  if(!urlContainsReloadedIsTrue())
                      window.location="currentUrl?reloaded=true";
                  });
              });
          </script>
          

          您可以使用 this 之类的东西构建 urlContainsReloadedIsTrue() 函数。

          【讨论】:

            【解决方案6】:

            由于某些未知原因,我无法让 javascripts 正常工作,所以最后我使用了这个简单的 codelet:

            如果会话(“Firstupdate”)“更新”那么 Response.AddHeader "刷新", "0" session("Firstupdate") = "更新" 别的 Response.AddHeader "刷新", "" Session.Contents.Remove("Firstupdate") 万一

            这似乎独立于任何脚本,并且对我的目的来说足够好。理想情况下,删除会话意味着虽然任何额外的刷新将再次强制页面进行 2 次刷新,但至少当更多客户涌入时,服务器不会加载无用的会话。我宁愿设置“Session.Timeout”明确地为“Firstupdate”变量,但显然超时对于整个会话对象及其包含的变量是通用的。

            再次抱歉,回复晚了,感谢您的帮助。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2011-03-24
              • 1970-01-01
              • 2011-02-17
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多