经典 ASP 和 JQuery 在重定向时重新加载 default.asp 页面
Classic ASP and JQuery reloads default.asp page on redirect
我已经将现有的经典 ASP 站点与 JQuery 集成(他们之前使用的是 VBScript)。以前的版本工作正常,但脚本需要更新才能在其他浏览器上工作。但是,当我重定向集成了 JQuery 的页面时,系统会加载 default.asp 文件和第二个 URL。地址栏也显示默认的url。
我该如何防止这种情况发生?
当我使用 window.open('url')
时,它会打开带有正确 URL 的正确页面,但我打开了 2 个选项卡。当我使用 window.open('url', '_self')
时,它仍然重定向到有问题的页面。
P.S。 Response.Redirect 'url'
和 window.open('url', '_self')
给出相同的结果。
编辑:这是使用的一些代码
这是在 default.asp
中加载的主框架 JS(提交函数)
$("img[name=cmdLog]").click(function(){
$("form[name=frmLogIn]").target = "_top";
$("form[name=frmLogIn]").get(0).setAttribute("action", "ValidateUser.asp");
$("form[name=frmLogIn]").submit();
});
这里是ValidateUser.asp(没有更新的JS,只使用VBScript)
<form name="frmValidate" method="post">
<%
Session("PMISConnString")="Provider=SQLOLEDB;Server=192.168.x.x;User ID=sa;PWD=x;Database=DB"
dim conn, rsEmp, SQLQuery, m_Code,i,lenStr,newCode,rsUser
set conn=Server.CreateObject("ADODB.Connection")
m_Code=Request.Form("txtEmpID")
lenStr=len(m_code)
newCode=""
for i=1 to lenStr
if mid(m_Code,i,1)="'" then
newCode=newCode & "''"
else
newCode=newCode & mid(m_Code,i,1)
end if
next
conn.Open=Session("PMISConnString")
dim clsCrypt
dim url
set clsCrypt=Server.CreateObject("ChiperText.clsChiperText")
SQLQuery="SELECT UserCode, Pwd "
SQLQuery=SQLQuery & "FROM Users "
SQLQuery=SQLQuery & "WHERE UserCode='" & clsCrypt.ChiperText(lcase(newCode)) & "'"
set rsUser=Server.CreateObject("ADODB.Recordset")
rsUser.Open SQLQuery,conn
if rsUser.EOF then
url = "ErrorPage.asp?TYPE=6"
elseif rsUser.Fields("Pwd")<>clsCrypt.ChiperText(Request.Form("txtEmpPassword")) then
url = "ErrorPage.asp?TYPE=7"
end if
SQLQuery="SELECT EmpID,EmpFirst,EmpLast,dbo.GetCapitalChars(Employee.EmpMid) AS MidInitial From Employee WHERE EmpID='" & newCode & "' "
SQLQuery=SQLQuery & "AND EmpActive=1 "
set rsEmp=Server.CreateObject("ADODB.Recordset")
rsEmp.Open SQLQuery,conn
if not rsEmp.EOF then
Session("EmpID")=Request.Form("txtEmpID")
Session("MyName")=rsEmp.Fields("EmpFirst") & " " & rsEmp.Fields("MidInitial") & " " & rsEmp.Fields("EmpLast")
'varServer="http://" + Request.ServerVariables("SERVER_NAME") + "/" + Session("VirtualName") + "/"
Response.Cookies("Site")="http://" + Request.ServerVariables("SERVER_NAME") + "/" + "PMIS"
Session("Server")="http://" + Request.ServerVariables("SERVER_NAME") + "/" + "PMIS"
Session("ImgFolder")="http://" + Request.ServerVariables("SERVER_NAME") + "/" + "PMIS/Images/" 'full path ng images folder under PMIS directory
url = "main2.asp"
else
url = "ErrorPage.asp?TYPE=1"
end if
Response.Redirect(url)
rsEmp.Close
Set rsEmp=Nothing
set clsCrypt=Nothing
conn.Close
set conn=Nothing
%>
</form>
如果在框架集中,请考虑使用 JavaScript 将 window.top.location.href 更改为您的重定向 URL。
我已经将现有的经典 ASP 站点与 JQuery 集成(他们之前使用的是 VBScript)。以前的版本工作正常,但脚本需要更新才能在其他浏览器上工作。但是,当我重定向集成了 JQuery 的页面时,系统会加载 default.asp 文件和第二个 URL。地址栏也显示默认的url。
我该如何防止这种情况发生?
当我使用 window.open('url')
时,它会打开带有正确 URL 的正确页面,但我打开了 2 个选项卡。当我使用 window.open('url', '_self')
时,它仍然重定向到有问题的页面。
P.S。 Response.Redirect 'url'
和 window.open('url', '_self')
给出相同的结果。
编辑:这是使用的一些代码
这是在 default.asp
中加载的主框架 JS(提交函数)$("img[name=cmdLog]").click(function(){
$("form[name=frmLogIn]").target = "_top";
$("form[name=frmLogIn]").get(0).setAttribute("action", "ValidateUser.asp");
$("form[name=frmLogIn]").submit();
});
这里是ValidateUser.asp(没有更新的JS,只使用VBScript)
<form name="frmValidate" method="post">
<%
Session("PMISConnString")="Provider=SQLOLEDB;Server=192.168.x.x;User ID=sa;PWD=x;Database=DB"
dim conn, rsEmp, SQLQuery, m_Code,i,lenStr,newCode,rsUser
set conn=Server.CreateObject("ADODB.Connection")
m_Code=Request.Form("txtEmpID")
lenStr=len(m_code)
newCode=""
for i=1 to lenStr
if mid(m_Code,i,1)="'" then
newCode=newCode & "''"
else
newCode=newCode & mid(m_Code,i,1)
end if
next
conn.Open=Session("PMISConnString")
dim clsCrypt
dim url
set clsCrypt=Server.CreateObject("ChiperText.clsChiperText")
SQLQuery="SELECT UserCode, Pwd "
SQLQuery=SQLQuery & "FROM Users "
SQLQuery=SQLQuery & "WHERE UserCode='" & clsCrypt.ChiperText(lcase(newCode)) & "'"
set rsUser=Server.CreateObject("ADODB.Recordset")
rsUser.Open SQLQuery,conn
if rsUser.EOF then
url = "ErrorPage.asp?TYPE=6"
elseif rsUser.Fields("Pwd")<>clsCrypt.ChiperText(Request.Form("txtEmpPassword")) then
url = "ErrorPage.asp?TYPE=7"
end if
SQLQuery="SELECT EmpID,EmpFirst,EmpLast,dbo.GetCapitalChars(Employee.EmpMid) AS MidInitial From Employee WHERE EmpID='" & newCode & "' "
SQLQuery=SQLQuery & "AND EmpActive=1 "
set rsEmp=Server.CreateObject("ADODB.Recordset")
rsEmp.Open SQLQuery,conn
if not rsEmp.EOF then
Session("EmpID")=Request.Form("txtEmpID")
Session("MyName")=rsEmp.Fields("EmpFirst") & " " & rsEmp.Fields("MidInitial") & " " & rsEmp.Fields("EmpLast")
'varServer="http://" + Request.ServerVariables("SERVER_NAME") + "/" + Session("VirtualName") + "/"
Response.Cookies("Site")="http://" + Request.ServerVariables("SERVER_NAME") + "/" + "PMIS"
Session("Server")="http://" + Request.ServerVariables("SERVER_NAME") + "/" + "PMIS"
Session("ImgFolder")="http://" + Request.ServerVariables("SERVER_NAME") + "/" + "PMIS/Images/" 'full path ng images folder under PMIS directory
url = "main2.asp"
else
url = "ErrorPage.asp?TYPE=1"
end if
Response.Redirect(url)
rsEmp.Close
Set rsEmp=Nothing
set clsCrypt=Nothing
conn.Close
set conn=Nothing
%>
</form>
如果在框架集中,请考虑使用 JavaScript 将 window.top.location.href 更改为您的重定向 URL。