如何判断当前页面是在1.asp还是在2.asp?
<%if rst3.Fields(1)<>0 then%>
<script language=vbscript>
i = msgbox("当天有记录,还要继续吗?",vbokcancel,"警告")
if i <>1 then
history.go(-2)
end if
</script>
<%end if%> 后面的代码是更新数据库的内容
这段代码提示当当天的记录不为空时,出现警告提示,如用户选ok(即i=1)则更新数据库的内容。当选cancel时(i<>1),则执行history.go(-2)操作。问题是转向页面后照样更新数据库,我想在这段代码和更新数据库的代码之间插入一判断当前页面代码,来决定是否更新数据库。
这问题我以前提过,有高手曾经回答过,但我没问清楚就把帖子给结了。现在重开一贴,希望能解我燃眉之急
问题点数:100、回复次数:19Top
1 楼meizz(梅花雪)回复于 2002-10-09 10:22:13 得分 20
<script language=javascript>
var tmp = self.location.href;
tmp = tmp.split("/");
alert(tmp[tmp.length-1]); 可得到当前网页的名字
</script>Top
2 楼dawsons(dawsons)回复于 2002-10-09 10:23:04 得分 10
你可以把更新数据库内容的代码做成个FUNCTION啊,然后在前面IF里判断i=1的时候调用这个function.Top
3 楼hjbwt(地主)回复于 2002-10-09 10:30:04 得分 10
只能用客户端脚本才能得到当前页面的url,用asp程序是的不到的,我看你只能像其他办法了,你可以设定一个标志,如果有的话,就更新,没有就不用更新,改标志通过脚本语言确定后用window.location.href的方式传递就行了Top
4 楼mustapha(O~U Gain)回复于 2002-10-09 10:55:59 得分 0
to dawsons:
是咋写的?
<%if i=1 then
aaa
end if
%>
<%function aaa{
更新数据库的代码}
%> 提示<%function aaa{这一行不对
to 地主:你这说的应该有道理,因为上次我问时那位高手也是这么说的,能详细些吗?
Top
5 楼BrightEye(男儿当自强,靠别人不如靠自己)回复于 2002-10-09 11:16:15 得分 5
楼顶的就可以啊.Top
6 楼superhasty(鸟儿自空中飞过)回复于 2002-10-09 11:56:59 得分 5
strURL=Request.ServerVariables("PATH_INFO")
response.write strURL '当前页面的URLTop
7 楼Zygodactyous(Zygodactylous)回复于 2002-10-09 12:14:44 得分 5
其实用不着判断页面这么麻烦,只要把你语句做一个改动即可:
<%
if rst3.Fields(1)<>0 then
%>
<script language=vbscript>
i = msgbox("当天有记录,还要继续吗?",vbokcancel,"警告")
if i <>1 then
history.go(-2)
end if
</script>
<%
Response.End '这是关键
end if
%>
要完全了解ASP语句的执行顺序与过程,你的问题是在执行了history.go(-2)时,end if后面更改数据库的语句也执行了,只要在end if前加一个Response.End就行了。Top
8 楼hzpike(pike)回复于 2002-10-09 13:19:14 得分 5
str=Request.ServerVariables("PATH_INFO")
if instr(str,"1.asp")<>0 then
xxxxx
else
xxxxTop
9 楼mustapha(O~U Gain)回复于 2002-10-09 14:28:54 得分 0
to 梅花雨 and 问个不休: 这个效果虽然能弹出框显示在什么页面,但由于Asp的执行顺序:Asp先执行服务器端代码,生成的Html送到客户端的时候已经没有服务器端代码了。所以在script中客户端程序的返回值tmp不能由我的<%%>内的服务器端判断程序调用。dwoson的调用函数的也是如此,因为函数中的程序是服务端的数据库更新程序。
to zygodactyous:你这样一做,即使i=1不也被response.end了吗?
to 地主:你所说的标志是不是指不用msgbox,用表单?
总之,我现在能够判断当前所属页面,但由于asp执行的先后顺序,客户端判断出的结果不能被服务器端所用。要不只有放弃msgbox,再做一个表单,这样能返回值,但不好看,而且上一个表单request的数据没办法取得。有什么好办法吗?Top
10 楼mustapha(O~U Gain)回复于 2002-10-09 15:25:40 得分 0
upTop
11 楼zhusuhao(不以为然)回复于 2002-10-09 15:47:34 得分 10
<script language=javascript>
if(top.main.location.toString().toLowerCase().indexOf("transaction/transaction.asp")!=-1)
{
top.main.location.reload();
}
</script>
这是我在框架页面的main中判断是否transaction/transaction.asp来决定是否刷新时用的代码。对你应该有用。Top
12 楼mustapha(O~U Gain)回复于 2002-10-09 18:25:19 得分 0
我现在索性不要msgbox,做了一个表单,应该是比较简单的
前一个页面:caiyou=Request.Form("caiyou")
<%if rst3.Fields(1)<>0 then%> '如果数据不为0,则出现表单问判断是否覆盖数据,做一个隐藏的东西来传caiyou的值。
<form name="form1" method="post" action="queding.asp">
<p>已有当天数据。确定是否要覆盖数据?</p>
<p>
<input type=hidden name="caiyou" value="<%Request.form("caiyou")%>">
<input type="radio" name="panduan" value="yes" checked>
是
<input type="radio" name="panduan" value="no">
否
</p>
<p>
<input type="submit" name="submit" value="确定">
</p>
</form>
后一个菜单queding.asp:<%response.write caiyou &"aaa" %> 但返回出来的值是"aaa"。这是怎么回事?Top
13 楼Iamfish(呆鱼)回复于 2002-10-09 18:57:45 得分 10
我倒!
看看结果是什么
<%
ScriptName=mid(request.ServerVariables("SCRIPT_NAME"),InStrRev(request.ServerVariables("SCRIPT_NAME"),"/"))
response.write ScriptName
%>
Top
14 楼chonboy(一只来自南方的羊)回复于 2002-10-09 21:28:34 得分 10
服务端
当前页面文件名称:Request.ServerVariables("SCRIPT_NAME")
前页页面文件名称:Request.ServerVariables("HTTP_REFERER")
客户端
当前页 window.location.href
分析获取的字符串,即可判断页面Top
15 楼wxb80(苦凡)回复于 2002-10-10 01:21:29 得分 0
好深噢哦Top
16 楼mustapha(O~U Gain)回复于 2002-10-10 09:35:14 得分 0
鱼兄弟和羊兄弟,你们误解了我最近一次的问题。由于Asp的执行顺序:Asp先执行服务器端代码,生成的Html送到客户端的时候已经没有服务器端代码了。所以在script中客户端程序的返回值不能由我的服务器端判断程序调用,因此我虽然可以判断当前所处的页面,但判断出的值不能返回到服务器端。
由于这个办法不可行,我只能用其他的方法。我现在想到的方法是:第一个文件
输入数据.asp,内有一个表单,数据以post的方式传到第二个文件 中间.asp,第二个文件也有一个表单,中间有同名的两个单选框,“是”和“不是”,还有一些隐藏的东西来把第一个文件传来的数据来传到第三个文件。
<input type=hidden name="caiyou" value="<%Request.form("caiyou")%>">
在第三个文件中,根据同名的单选框的值是“是”还是“不是”来决定是否更新数据库,如确定更新数据库,则更新所需的值在传来的隐藏的东西里。
现在我发现第一个文件到第二个文件的传送没问题,而第二个文件到第三个文件传送出现问题,包括单选框的值,没有一个能传送到第三个文件。这是怎么回事?
SOS!!!Top
17 楼qimangxing(徐家庄的七芒星)回复于 2002-10-10 10:02:58 得分 10
<input type=hidden name="caiyou" value="<%Request.form("caiyou")%>">
改成:
<input type=hidden name="caiyou" value="<%=Request.form("caiyou")%>">
试一下,我也不大理解你的问题,我晕。。。。。。Top
18 楼mustapha(O~U Gain)回复于 2002-10-10 10:32:46 得分 0
我看出来了,是我的两个单选框“是”,“否”出现了问题。其实这个和聊天室里男和女的性别选择一样。如果用下拉列表框我会做,但在这个程序中最好用单选框,该怎么做?关键是怎么判断?
Top
19 楼mustapha(O~U Gain)回复于 2002-10-10 12:02:28 得分 0
是这个问题。我解决了。还是要感谢大家的热心帮助。现在给分Top




