Javascript问题:alter()窗口连续弹出两次?WHY?!

OhSky 2005-06-30 03:08:46
往本页提交写入数据库请求并处理,写入后通过以下代码弹出提示:
...
%>
<script language="javascript">window.alert("添加成功!");</script>
<%

...

奇怪的是,每次都要连续弹出两次才罢休,而如果在这个脚本前加一句 :

response.write sql '--sql是执行插入数据库的语句

则只会弹出一次。

但我不可能把sql语句打给客户看,请问这问题有什么解决方法,也请顺便解释一下为何会出现这样的问题?

先行谢过!
...全文
1544 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
shilei831115 2005-06-30
  • 打赏
  • 举报
回复
ding
OhSky 2005-06-30
  • 打赏
  • 举报
回复
<!-- #include virtual = "/include/sql_.asp" -->
<%
'录入
'sType=0 所扣金额,=1 所汇金额
' Reser_no 订单号
' blinput 用于控制 submit 按钮的value 是录入还是删除,yes 录入,no 删除

if sql_(request.form("btnok"),0) <>"" then
sType = sql_(request.form("sType"),0)
Reser_no = sql_(request.form("Reser_no"),0)
else
sType = sql_(request.querystring("sType"),0)
Reser_no = sql_(request.querystring("Reser_no"),0)
end if

if Reser_no ="" then
response.write "<br><p align=center><font color=red size=4>订单不存在!</font></p>"
response.end
end if


dim Stitle
if sType = "0" then
Stitle = "所扣金额"
Payment_Type = "7" '--冲抵方式 为所扣金额
else
Stitle = "所汇金额"
Payment_Type = "4" '--汇款方式 为所汇金额
end if

dim conn,rs,sql
set conn = server.createobject("ADODB.CONNECTION")
set rs = server.createobject("ADODB.RECORDSET")
conn.open "filedsn=file.dsn"
strmsg="nomsg" '--初始化提示信息
'-----------------------------------------------------------------------------
if sql_(request.form("btnok"),0)="输入" then '--写入金额
Money_Rec = sql_(Request.form("Money_Rec"),0)
Op_Ip = sql_(Request.ServerVariables("remote_addr"),4)
Notes = sql_(Request.form("Notes"),0)
sql = "select id from table_1 "
sql = sql & " where reser_no = '"& Reser_no &"' and reser_type=7 and payment_type=" & payment_type

rs.open sql ,conn '---判断当前订单是否被记录过,有则提示,无则录入

if not rs.eof then
strmsg = "该订单已经添加过记录!"
else
sql = "insert into table_1(Reser_No,Reser_Type,Money_Rec,Money_Rec_Date,Operator,Op_Date"
sql = sql & " ,Op_ip,Notes,Payment_Type,Money_rec_addr,Money_Rec_Count,Type,Itinerary_id)"
sql = sql & " values ("
sql = sql & " '"& Reser_no &"',7,"& Money_Rec &",GETDATE(),'"&Session("staff")&"',GETDATE()"
sql = sql & " ,'"& Op_Ip &"','"¬es&"','" & Payment_Type & "',0,0,0,0 "
sql = sql & " )"

conn.execute sql
strmsg = "添加成功"
elseif sql_(request.form("btnok"),0) = "删除" then
id = sql_(Request.form("id"),0)
sql_bak = "insert into table_1_his(id,Reser_No,Reser_Type,Money_Rec,Money_Rec_Date,Operator,Op_Date,Op_ip,Notes"
sql_bak = sql_bak & " ,Payment_Type) "
sql_bak = sql_bak & " SELECT id,Reser_No,Reser_Type,Money_Rec,Money_Rec_Date,Operator,Op_Date,Op_ip,Notes,Payment_Type "
sql_bak = sql_bak & " From table_1 where id='"& id&"'"

sql = "delete from table_1 where id = '"& id&"'"
conn.execute sql_bak
conn.execute sql
strmsg = "删除成功"
end if
'-----------------------------------------------------------------------------

sql = "SELECT id,money_rec,notes from table_1 "
sql = sql & " where reser_no = '"& Reser_no &"' and reser_type=7 and payment_type=" & payment_type

rs.open sql ,conn
if not (rs.eof or rs.bof) then
money = rs("money_rec")
notes = rs("notes")
blinput = "no"
id = rs("id")
else
money = 0
notes = ""
blinput = "yes"

end if

rs.close()

%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>录入金额</title>
<script language="javascript">
function checkfrm()
{

}
</script>
<script language="javascript">
//提示信息
if ('<%=strmsg%>'!='nomsg')
{
window.alert('<%=strmsg%>');
}
</script>
</head>
<body topmargin="40">
<center>
<table width="400" border="1" cellpadding="0" cellspacing="0" bordercolordark="#FFFFFF" bordercolorlight="#000000">
<tr align="center">
<th height="40" colspan="2" bgcolor="#66CCFF" scope="col"><%=Stitle%></th>
</tr>
<tr align="right" bgcolor="#f1f1f1">
<th height="20" colspan="2" scope="col" align="right"><a href="Vouch_Total_inputHis.asp">历史</a>  </th>
</tr>
<form name="form1" method="post" action="vouch_total_input.asp">
<tr>
<td width="100" height="30"><%=Stitle%>:</td>
<td width="300">
<input type="text" name="Money_Rec" size="26" value="<%=money%>">
</td>
</tr>
<tr>
<td height="30">备注:</td>
<td><textarea name="Notes" cols="24" rows="6"><%=notes%></textarea></td>
</tr>
<tr>
<td height="30" colspan="2" align="center">
<input type="submit" name="btnok" id="btnok" value="<%if blinput="yes" then response.write "输入" else response.write "删除" end if%>">
<input type="hidden" name="Reser_no" value="<%=Reser_no%>">
<input type="hidden" name="sType" value="<%=sType%>">
<input type="hidden" name="Payment_Type" value="<%=Payment_Type%>">
<input type="hidden" name="id" value="<%=id%>">
</td>
</tr>
</form>
</table>
</center>
</body>
</html>
<%
conn.close()
set conn = nothing
set rs = nothing
conn = empty
rs = empty

%>
OhSky 2005-06-30
  • 打赏
  • 举报
回复
感谢楼上XDJM的帮助让我能说话.

问题已解决.

定义变量,将提示信息赋给变量,在</head>标记前写一<script></script>脚本执行该提示.

目前所能想到的最合理的解释就是 写入数据库时是在服务器端运行,当时虽执行过一次提示,后进行脚本解析时,由于提示信息程序数客户端程序,故会再次被执行;而在脚本前response.write一次信息则只提示一次,大概是这时已在客户端输出信息,则不会被再次执行.
不过,这解释很牵强,为什么只有输出执行的sql才不会再次弹 alert窗口?而我输出一些空格.等咚咚时依然会弹???

留待以后有人对此有兴趣时再解惑.

感谢各位的耐心解答.
SeaSee 2005-06-30
  • 打赏
  • 举报
回复
友情 UP
OhSky 2005-06-30
  • 打赏
  • 举报
回复
?
OhSky 2005-06-30
  • 打赏
  • 举报
回复
即使把
response.write "<script language='javascript'>window.alert('添加成功');</script>

改对了,执行起来 依然连见俩窗口.

这问题挺奇怪的.
OhSky 2005-06-30
  • 打赏
  • 举报
回复
哇!

不能这时候就end,下面还有任务.
life360 2005-06-30
  • 打赏
  • 举报
回复
因为你没有终止运行,在判断后加上终止

response.end
OhSky 2005-06-30
  • 打赏
  • 举报
回复
啊,果然。。。

好眼力,不过,解决之道...?
孟子E章 2005-06-30
  • 打赏
  • 举报
回复
response.write "<!--" & sql_bak & "--> " ' 无效,必须显式打出sql语句
' response.write "<script language='javascript'>window.alter('添加成功');</script>" '错误


window.alter写错了
window.alert()
OhSky 2005-06-30
  • 打赏
  • 举报
回复
<!--抱歉,改了半天,有些地方写乱了,最新的版本-->

<!-- #include virtual = "/include/sql_.asp" -->
<%
'录入
'sType=0 所扣金额,=1 所汇金额
' Reser_no 订单号
' blinput 用于控制 submit 按钮的value 是录入还是删除,yes 录入,no 删除

if sql_(request.form("btnok"),0) <>"" then
sType = sql_(request.form("sType"),0)
Reser_no = sql_(request.form("Reser_no"),0)
else
sType = sql_(request.querystring("sType"),0)
Reser_no = sql_(request.querystring("Reser_no"),0)
end if

if Reser_no ="" then
response.write "<br><p align=center><font color=red size=4>订单不存在!</font></p>"
response.end
end if


dim Stitle
if sType = "0" then
Stitle = "所扣金额"
Payment_Type = "7" '--冲抵方式 为所扣金额
else
Stitle = "所汇金额"
Payment_Type = "4" '--汇款方式 为所汇金额
end if

dim conn,rs,sql
set conn = server.createobject("ADODB.CONNECTION")
set rs = server.createobject("ADODB.RECORDSET")
conn.open "filedsn=file.dsn"
'-----------------------------------------------------------------------------
if sql_(request.form("btnok"),0)="输入" then '--写入金额
Money_Rec = sql_(Request.form("Money_Rec"),0)
Op_Ip = sql_(Request.ServerVariables("remote_addr"),4)
Notes = sql_(Request.form("Notes"),0)
sql = "select id from table_1 "
sql = sql & " where reser_no = '"& Reser_no &"' and reser_type=7 and payment_type=" & payment_type

rs.open sql ,conn '---判断当前订单是否被记录过,有则提示,无则录入

if not rs.eof then
%>
<script language="javascript">window.alert("该订单已经添加过记录!");</script>
<%
else
sql = "insert into table_1(Reser_No,Reser_Type,Money_Rec,Money_Rec_Date,Operator,Op_Date"
sql = sql & " ,Op_ip,Notes,Payment_Type,Money_rec_addr,Money_Rec_Count,Type,Itinerary_id)"
sql = sql & " values ("
sql = sql & " '"& Reser_no &"',7,"& Money_Rec &",GETDATE(),'"&Session("staff")&"',GETDATE()"
sql = sql & " ,'"& Op_Ip &"','"¬es&"','" & Payment_Type & "',0,0,0,0 "
sql = sql & " )"

conn.execute sql
response.write sql '最有效, 写了就会只弹出一次;不写则连弹两次
' response.write "<!--" & sql_bak & "--> " ' 无效,必须显式打出sql语句
' response.write "<script language='javascript'>window.alter('添加成功');</script>" '错误
%>
<script language="javascript"> window.alert("添加成功!");</script>
<%
end if
rs.close()
elseif sql_(request.form("btnok"),0) = "删除" then
id = sql_(Request.form("id"),0)
sql_bak = "insert into table_1_his(id,Reser_No,Reser_Type,Money_Rec,Money_Rec_Date,Operator,Op_Date,Op_ip,Notes"
sql_bak = sql_bak & " ,Payment_Type) "
sql_bak = sql_bak & " SELECT id,Reser_No,Reser_Type,Money_Rec,Money_Rec_Date,Operator,Op_Date,Op_ip,Notes,Payment_Type "
sql_bak = sql_bak & " From table_1 where id='"& id&"'"

sql = "delete from table_1 where id = '"& id&"'"
conn.execute sql_bak
conn.execute sql
%>
<script language="javascript"> window.alert("删除成功!");</script>
<%

end if
'-----------------------------------------------------------------------------

sql = "SELECT id,money_rec,notes from table_1 "
sql = sql & " where reser_no = '"& Reser_no &"' and reser_type=7 and payment_type=" & payment_type

rs.open sql ,conn
if not (rs.eof or rs.bof) then
money = rs("money_rec")
notes = rs("notes")
blinput = "no"
id = rs("id")
else
money = 0
notes = ""
blinput = "yes"

end if

rs.close()

%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>录入金额</title>
<script language="javascript">
function checkfrm()
{

}
</script>
</head>
<body topmargin="40">
<center>
<table width="400" border="1" cellpadding="0" cellspacing="0" bordercolordark="#FFFFFF" bordercolorlight="#000000">
<tr align="center">
<th height="40" colspan="2" bgcolor="#66CCFF" scope="col"><%=Stitle%></th>
</tr>
<tr align="right" bgcolor="#f1f1f1">
<th height="20" colspan="2" scope="col" align="right"><a href="Vouch_Total_inputHis.asp">历史</a>  </th>
</tr>
<form name="form1" method="post" action="vouch_total_input.asp">
<tr>
<td width="100" height="30"><%=Stitle%>:</td>
<td width="300">
<input type="text" name="Money_Rec" size="26" value="<%=money%>">
</td>
</tr>
<tr>
<td height="30">备注:</td>
<td><textarea name="Notes" cols="24" rows="6"><%=notes%></textarea></td>
</tr>
<tr>
<td height="30" colspan="2" align="center">
<input type="submit" name="btnok" id="btnok" value="<%if blinput="yes" then response.write "输入" else response.write "删除" end if%>">
<input type="hidden" name="Reser_no" value="<%=Reser_no%>">
<input type="hidden" name="sType" value="<%=sType%>">
<input type="hidden" name="Payment_Type" value="<%=Payment_Type%>">
<input type="hidden" name="id" value="<%=id%>">
</td>
</tr>
</form>
</table>
</center>
</body>
</html>
<%
conn.close()
set conn = nothing
set rs = nothing
conn = empty
rs = empty

%>
OhSky 2005-06-30
  • 打赏
  • 举报
回复
代码伺候!

我看了半天没看出逻辑错在哪,还请多指点。
OhSky 2005-06-30
  • 打赏
  • 举报
回复
<!-- #include virtual = "/include/sql_.asp" -->
<%
'录入
'sType=0 所扣金额,=1 所汇金额
' Reser_no 订单号
' blinput 用于控制 submit 按钮的value 是录入还是删除,yes 录入,no 删除

if sql_(request.form("btnok"),0) <>"" then
sType = sql_(request.form("sType"),0)
Reser_no = sql_(request.form("Reser_no"),0)
else
sType = sql_(request.querystring("sType"),0)
Reser_no = sql_(request.querystring("Reser_no"),0)
end if

if Reser_no ="" then
response.write "<br><p align=center><font color=red size=4>订单不存在!</font></p>"
response.end
end if


dim Stitle
if sType = "0" then
Stitle = "所扣金额"
Payment_Type = "7" '--冲抵方式 为所扣金额
else
Stitle = "所汇金额"
Payment_Type = "4" '--汇款方式 为所汇金额
end if

dim conn,rs,sql
set conn = server.createobject("ADODB.CONNECTION")
set rs = server.createobject("ADODB.RECORDSET")
conn.open "filedsn=file.dsn"
'-----------------------------------------------------------------------------
if sql_(request.form("btnok"),0)="输入" then '--写入金额
Money_Rec = sql_(Request.form("Money_Rec"),0)
Op_Ip = sql_(Request.ServerVariables("remote_addr"),4)
Notes = sql_(Request.form("Notes"),0)
sql = "select id from table_1 "
sql = sql & " where reser_no = '"& Reser_no &"' and reser_type=7 and payment_type=" & payment_type

rs.open sql ,conn '---判断当前订单是否被记录过,有则提示,无则录入

if not rs.eof then
%>
<script language="javascript"> window.alert("该订单已经添加过记录!");</script>
<%
else
rs.close()
sql = "insert into table_1(Reser_No,Reser_Type,Money_Rec,Money_Rec_Date,Operator,Op_Date"
sql = sql & " ,Op_ip,Notes,Payment_Type,Money_rec_addr,Money_Rec_Count,Type,Itinerary_id)"
sql = sql & " values ("
sql = sql & " '"& Reser_no &"',7,"& Money_Rec &",GETDATE(),'"&Session("staff")&"',GETDATE()"
sql = sql & " ,'"& Op_Ip &"','"¬es&"','" & Payment_Type & "',0,0,0,0 "
sql = sql & " )"

conn.execute sql
response.write sql '最有效, 写了就会只弹出一次;不写则连弹两次
' response.write "<!--" & sql_bak & "--> " ' 无效,必须显式打出sql语句
' response.write "<script language='javascript'>window.alter('添加成功');</script>" '错误
%>
<script language="javascript"> window.alert("添加成功!");</script>
<%
end if
elseif sql_(request.form("btnok"),0) = "删除" then
id = sql_(Request.form("id"),0)
sql_bak = "insert into table_1_his(id,Reser_No,Reser_Type,Money_Rec,Money_Rec_Date,Operator,Op_Date,Op_ip,Notes"
sql_bak = sql_bak & " ,Payment_Type) "
sql_bak = sql_bak & " SELECT id,Reser_No,Reser_Type,Money_Rec,Money_Rec_Date,Operator,Op_Date,Op_ip,Notes,Payment_Type "
sql_bak = sql_bak & " From table_1 where id='"& id&"'"

sql = "delete from table_1 where id = '"& id&"'"
conn.execute sql_bak
conn.execute sql
%>
<script language="javascript"> window.alert("删除成功!");</script>
<%

end if
'-----------------------------------------------------------------------------


sql = "SELECT id,money_rec,notes from table_1 "
sql = sql & " where reser_no = '"& Reser_no &"' and reser_type=7 and payment_type=" & payment_type

rs.open sql ,conn
if not (rs.eof or rs.bof) then
money = rs("money_rec")
notes = rs("notes")
blinput = "no"
id = rs("id")
else
money = 0
notes = ""
blinput = "yes"

end if

rs.close()

%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>录入金额</title>
<script language="javascript">
function checkfrm()
{

}
</script>
</head>
<body topmargin="40">
<center>
<table width="400" border="1" cellpadding="0" cellspacing="0" bordercolordark="#FFFFFF" bordercolorlight="#000000">
<tr align="center">
<th height="40" colspan="2" bgcolor="#66CCFF" scope="col"><%=Stitle%></th>
</tr>
<tr align="right" bgcolor="#f1f1f1">
<th height="20" colspan="2" scope="col" align="right"><a href="Vouch_Total_inputHis.asp">历史</a>  </th>
</tr>
<form name="form1" method="post" action="vouch_total_input.asp">
<tr>
<td width="100" height="30"><%=Stitle%>:</td>
<td width="300">
<input type="text" name="Money_Rec" size="26" value="<%=money%>">
</td>
</tr>
<tr>
<td height="30">备注:</td>
<td><textarea name="Notes" cols="24" rows="6"><%=notes%></textarea></td>
</tr>
<tr>
<td height="30" colspan="2" align="center">
<input type="submit" name="btnok" id="btnok" value="<%if blinput="yes" then response.write "输入" else response.write "删除" end if%>">
<input type="hidden" name="Reser_no" value="<%=Reser_no%>">
<input type="hidden" name="sType" value="<%=sType%>">
<input type="hidden" name="Payment_Type" value="<%=Payment_Type%>">
<input type="hidden" name="id" value="<%=id%>">
</td>
</tr>
</form>
</table>
</center>
</body>
</html>
<%
conn.close()
set conn = nothing
set rs = nothing
conn = empty
rs = empty

%>
life360 2005-06-30
  • 打赏
  • 举报
回复
估计你的代码循环了两次吧???

全部贴出来看看
  • 打赏
  • 举报
回复
<script language="javascript">alert("添加成功!");history.back();</script>
孟子E章 2005-06-30
  • 打赏
  • 举报
回复
你代码写的有问题,贴

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧