主题说。简短版本:我需要一种方法来强制刷新页面仅在第一页加载。在asp.net中会很容易,但我不知道如何在经典的asp中使用它。
更长的版本:我正在尝试更新一个相当大的应用程序,其中一个问题是,当您登录时,它还没有将必要的信息存储到会话中,除非您单击几个特定按钮或刷新页面...当客户尝试浏览页面时会导致问题。
我可以跟踪会话并手动设置它们,但是我已经失败了几个小时了,所以强制刷新会容易得多。如果只有一种方法来检测初始页面加载,所以我不会导致循环。重定向也是不可能的,因为应用程序有太多的代码(所有这些实际上都没有注释和杂乱无章)让我看看它是如何实际构建所有验证校验和等的。
编辑:感谢您的回复,并为迟到的答案感到抱歉。从你们那里得到了一些好主意。 :)
答案 0 :(得分:5)
检查会话cookie,说明它是否是第一次加载(true
=之前已加载false
=首次加载)。
一个。如果false
,请添加将页面重新加载到响应的js,并将Cookie设置为true
湾如果true
,请不要再做了。该页面已重新加载。
只要用户不断更新会话,这应该只会立即重新加载第一个负载。
编辑:在回复评论时,以下是导致客户端页面重新加载的javascript示例。据我所知,这与浏览器无关:
<script type="text/javascript">window.reload();</script>
(我承认这似乎有点像黑客,但它会工作。可能还有其他一些方法可以重新加载页面,而无需发送额外的javascript命令,但我不知道任何经典ASP。)
答案 1 :(得分:2)
尝试以下3个步骤:
答案 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”变量显式,但显然超时是整个会话对象及其包含的变量的普遍性。
再次,抱歉迟到的回复并感谢您的帮助。