(ASP classic)停止/阻止其他代码执行而不会中断Javascript执行
我正在运行一个类似于this other thread中的问题,我缺少想法,所以我非常感谢任何帮助!(ASP classic)停止/阻止其他代码执行而不会中断Javascript执行
这是事情: 我们有一个ASP应用程序使用会话变量,并且必须处理会话合并由于多标签(IE8)。
很多很多很多的尝试之后,我来到了以下实现:
我设置于客户端的ID给每个浏览器的标签(我使用的是sessionStorage为) 。
为了使它在服务器端可用(因为我找不到任何其他方式),我将它保存在cookie中并重新加载页面。
最后,在我的ASP页面上,我从cookie中获取该ID并将其用作应用程序上所有会话变量的前缀。
这里有一个简单的例子
的Javascript(在每一个ASP文件的最开始插入)
LoadJs();
// Cookie and TabID handler
function LoadJs()
{
if (getInternetExplorerVersion() <= 6)
{
//alert("Exit..... old browser version : " + getInternetExplorerVersion());
return;
}
if (sessionStorage.TabID)
{
// Check value in cookie
var tabIdinCookie = readCookie("tabid");
// if ID in cookie not the same as ID in session update cookie and
// refresh the page to update values in server-side
if(!tabIdinCookie || (tabIdinCookie && tabIdinCookie != sessionStorage.TabID))
{
createCookie("tabid",sessionStorage.TabID);
ReloadPage();
}
}
else
{
// Create random ID
var currentTime = new Date();
sessionStorage.TabID = currentTime.getTime();
// Save ID to cookie
createCookie("tabid",sessionStorage.TabID);
createCookie("usingIE8",true,1);
// Refresh the page to make it available from server-side
ReloadPage();
}
return true;
}
// Redirect to the same page to refresh data at server-side
function ReloadPage()
{
window.location.reload(true);
}
然后,ASP代码:
<%
Dim Nm
Nm=""
response.Write("<br>Reading from cookie....")
if (Request.cookies("usingIE8") <> "")then
if (Request.cookies("tabid") = "") then
'response.Write("<br>No cookie")
'response.flush()
' WHAT TO DO HERE ????
else
Response.Write("<br>Cookie FOUND<br>")
Nm = Request.cookies("tabid")
end if
end if
if (Session(Nm + "LogonTime")="") then
Response.Write("<br><b>Updating session</b><br>")
Session(Nm + "LogonTime") = Now
UpdateInDB(Session(Nm + "LogonTime"))
' Do other stuffs
end if
%>
我正要终于得到一个解决方法的问题很骄傲,但我意识到,当一个页面做一个POST操作,所有代码ASP呈现(使用错误的前缀-ID)和执行(数据库操作包括)在正确TabID可以在cookie上更新并且可以通过javascript重新加载页面。我的意思是我所有的页面代码都被执行了两次,之前和之后再次执行刷新...: - |
有没有人认为它可以实现smthg像一个Response.End(),以防止其余的代码ASP执行,如果我可以确定我必须刷新页面而不杀死在同一时间的JavaScript执行?或者在网页上的其他操作之前等待所有JavaScript执行?
我被困在这里,它让我哭,不得不在这里停止!必须有一个解决方案...如果我能找到一个修复程序,它将被应用于许多ASP(3.0)应用程序,至少在3或5年之前不会升级到ASP.NET。
由于提前,
我没有,但知道为什么大家都这样做,而不是重新加载整个页面,我会使用AJAX来设置会话变量?
确定,例如使用jQuery:
// AJAX Request
$.post("session.asp", { act: "setSession", varName: "myVar", varValue: "myVal" },
function(data) {
alert("new Session value: " + data);
});
然后会话。ASP:
if request.form("act") = "setSession" then
session(request.form("varName")) = request.form("varValue")
' now you have the new value in Session:
'
response.write Session("myVar")
end if
希望这有助于
您好ulluoink,感谢您的回复.... 它可能是一个有趣的方法,但我必须承认,我不知道我怎么能达到它...我可以使用jQuery图像实例,但那么我怎么能更新会话变量?我会操纵一个ASP(不.NET)会话...你认为这可能是可能的吗? – Manotas 2010-07-19 10:03:02
另一种方法时,我会高兴,如果能够将捕捉到每一个请求的网页上ASP脚本的执行之前更新饼干! :-) .... 任何人 ? – Manotas 2010-07-09 08:16:37
这意味着没有其他事情要做? .....''( – Manotas 2010-07-12 08:21:10