2016-12-14 60 views
1

我的网页上有一个“返回上一页”链接。我用下面的代码去前一页经典asp网页上的返回链接

document.write('<a href="' + document.referrer + '"><span class="style2">Return to previous Page</span></a>'); 

如果页面回发那么上面的代码不工作,所以我想下面的代码去到前一页,但这不起作用正确的。 这里是我

If InStr(LCase(Request.ServerVariables("http_referer")), "technicalinfo.aspx") > 0 Then 
    Session("link") = "technicalInfo.aspx" 
Else If InStr(LCase(Request.ServerVariables ("http_referer")), "Prodinfo.aspx") > 0 Then 
    Session("link") = "ProdInfo.aspx" 
End If 

的错误出现在这里,当我试图将用户重定向到由会话变量

<%dim URL as string = Session("link") %> 
<a href=URL>Go Back to previous Page</a> 

上面的代码不起作用提供的链接。我如何根据Session变量的值回到上一页?

+0

。你的想法,如果用户的浏览器阻止了'Referer'头工作。如果这是一个向导过程,那么你应该知道前一页是什么,否则这个链接为用户提供什么样的好处,如果他们只需点击浏览器的后退按钮? – Dai

+0

我知道我的上一页是什么,这就是为什么我将它存储在会话变量中。 – Anjali5

+0

但是为什么?这是什么商业案例?它如何使用户受益或改善您的应用程序? – Dai

回答

0

您最好使用客户端browser history API来做到这一点。

要实现一个后退按钮,你会做这样的事情:

<button onclick="window.history.back()">Back</button>

+0

这可能不适用于所有情况,特别是在传统的ASP中,它的工作方式是执行POST,然后是GET,IIRC,因此回到历史记录中可以进入POST请求,而不是以前的GET –

+0

经典的ASP绝对是一个PITA,我不认为这个问题会有一个非常通用的解决方案,可能需要使用浏览器历史API和'location.assign' /'location.replace'取决于是否需要更新浏览器历史记录当最近我必须这样做时,我将整个传统的ASP应用程序放在一个iframe中,并从外部控制它。拦截所有锚点a nd表单提交以及一些猴子补丁来处理Ajax等。 – cchamberlain