页面加载 - 经典asp中的强制刷新?

时间:2009-05-12 07:45:35

标签: asp-classic refresh pageload

主题说。简短版本:我需要一种方法来强制刷新页面仅在第一页加载。在asp.net中会很容易,但我不知道如何在经典的asp中使用它。

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

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

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

6 个答案:

答案 0 :(得分:5)

  1. 检查会话cookie,说明它是否是第一次加载(true =之前已加载false =首次加载)。

  2. 一个。如果false,请添加将页面重新加载到响应的js,并将Cookie设置为true
    湾如果true,请不要再做了。该页面已重新加载。

  3. 只要用户不断更新会话,这应该只会立即重新加载第一个负载。

    编辑:在回复评论时,以下是导致客户端页面重新加载的javascript示例。据我所知,这与浏览器无关:

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

    (我承认这似乎有点像黑客,但它会工作。可能还有其他一些方法可以重新加载页面,而无需发送额外的javascript命令,但我不知道任何经典ASP。)

答案 1 :(得分:2)

尝试以下3个步骤:

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

答案 2 :(得分:2)

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

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

答案 3 :(得分:2)

使用VBScript。

您可以通过重定向到自身并使用查询字符串变量来重新加载页面:

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

作为替代方案,您可以设置会话变量并检查:

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

答案 4 :(得分:1)

如果说查询字符串参数'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()函数。

答案 5 :(得分:1)

我因为一些未知原因让javascripts工作时遇到了问题,所以最后我使用了这个简单的codelet:

    If session("Firstupdate") <> "updated" Then
        Response.AddHeader "Refresh", "0" 
        session("Firstupdate") = "updated"
    Else
        Response.AddHeader "Refresh", "" 
        Session.Contents.Remove("Firstupdate")
    End If

这似乎与任何脚本无关,并且对我的目的来说效果很好。理想情况下,删除会话意味着虽然任何额外的刷新将再次强制页面进行2次刷新,但是当更多客户涌入时,至少服务器没有加载无用的会话。我宁愿设置'Session.Timeout'对于“Firstupdate”变量显式,但显然超时是整个会话对象及其包含的变量的普遍性。

再次,抱歉迟到的回复并感谢您的帮助。