为什么想要在Javascript中插入ASP的代码无法执行呢?

芒果仔 2011-12-06 11:50:47
这里我用到两个页面,第一个是用来显示学生信息的,包括学号、姓名、班级、课程号、成绩,然后显示出来以后在每条记录最右边动态生成两个按钮,一个是修改,一个是删除。目前删除已经没问题,问题就在修改。

在修改的页面,我首先抓取"iStuDisplay.asp"这个页面中数据库里的数据,将“学号、姓名等”信息先显示出来,然后下面有一个Text框,一个Button按钮,Text框输入需要修改的分数,Button提交。

问题就出现在这里,我的设想是输入框中输入完数据后,本页面再次抓取Text框中的内容,然后用ASP来处理,处理完了用"Response.Redirect"跳转到"iStuDisplay.asp"显示修改完的内容。我把这段数据库操作的ASP代码插入在window.confirm()中,点击“是”就执行,“否”就不执行。但是发现无法执行,这是为什么呢?难道需要其它方法来控制数据库操作的执行?

报错的信息是”发生了未处理的异常(“关键字'WHERE'附近有语法错误。”),发生位置是w3wp.exe[4676]。我不觉得SQL语句有什么问题啊

如果在JS中判断是否执行这段ASP代码,怎么改比较好呢?

代码如下:

<%
Dim getSelectedIndex
Dim getSNO, getSCLASS, getSNAME, getCNO, getGRADE

'//从“iStuDisplay.asp”获取:学号、班级、课程号、成绩
getSelectedIndex = Request("selectedIndex")

getSNO = Request("txtSNO" &getSelectedIndex)
getSNAME = Request("txtSName" &getSelectedIndex)
getSCLASS = Request("txtSCLASS" &getSelectedIndex)
getCNO = Request("txtCNO" &getSelectedIndex)
getGRADE = Request("txtGRADE" &getSelectedIndex)
%>

<!--打印从“iStuDisplay.asp”获取的“学号、班级、课程号、成绩”信息-->
<b><font size = "2" color = "Maroon">您所需要修改的记录如下:</font></b><br>
<table width="40%" border="1" bordercolor="DarkSlateGray" cellspacing="1" cellpadding="3">
<tr bgcolor=DarkBlue >
<th><font size='2' color="White">学号</font></th>
<th><font size='2' color="White">姓名</font></th>
<th><font size='2' color="White">班级</font></th>
<th><font size='2' color="White">课程号</font></th>
<th><font size='2' color="White">成绩</font></th>
</tr>
<%
Response.Write("<tr bgcolor = white>")
Response.Write("<td><font size='2'>"&getSNO&"</font></td>")
Response.Write("<td><font size='2'>"&getSCLASS&"</font></td>")
Response.Write("<td><font size='2'>"&getSNAME&"</font></td>")
Response.Write("<td><font size='2'>"&getCNO&"</font></td>")
Response.Write("<td><font size='2'>"&getGRADE&"</font></td>")
Response.Write("</tr>")
%>
</table>

<html>
<body>
<body style="background-color:DarkSeaGreen;">

<form name = "updateForm">
<font size = "2">修改为:<input type = "text" name = "txtUpdateScore" size ="4" maxlength = "3"> 分 <input type = "Button" name = "btnUpdateScore" value = "点击修改" onclick = "btnUpdateScoreCheck()">
</form></font>

<script language = "Javascript">

function btnUpdateScoreCheck()
{
if (window.confirm("是否确定修改?") == true )
{
//如果选择“是”则执行修改操作
document.updateForm.action = "iStuUpdating.asp";
document.updateForm.target = "_self";
document.updateForm.method = "post";
document.updateForm.submit();

//执行以后这段代码就不见了,报错了!
<%
'//从“iStuUpdating.asp”(即本页面)获取输入的需要修改的分数值
Dim getTxtUpdateScore
getTxtUpdateScore = Request("txtUpdateScore")

Dim Conn, rs
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "provider=SQLOLEDB; Database=stumgr;data source=.;uid=sa;pwd=222222"

Set rs = Server.CreateObject("ADODB.Recordset")
SQL ="UPDATE STU_GRADE SET grade = "&getTxtUpdateScore&" WHERE sno = '"&getSNO&"' AND cno = '"&getCNO&"' AND grade = "&getGRADE
rs.open SQL,Conn,1,1

Conn.Close
Set Conn = Nothing

Response.Redirect "iStuDisplay.asp"
%>
}
}
</script>

</body>
</html>

...全文
307 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
楼主学ASP时,最基本的基础都没在意,ASP是在服务器先执行,然后把执行后的HTML+JS结果返回到客户端的。这是任何讲ASP的基础时都会说到的,但也是很多人不注意的。

要想让后台根据前台操作的结果去执行相应的行为,只有两个方法:
一是前台提交,后台执行完再返回。
二是用AJAX。
但根据楼主的水平,除非非常必要才选择第二个方法,因为对你来说肯定不容易。
多练练吧,第一种都没用熟,那是不行的。
至于楼主后面再写什么程序,都是一个错。不用想了。你既然是要根据JS来判断ASP去不去执行,就不能在HTML里直接写ASP。
芒果仔 2011-12-07
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 kris2010 的回复:]

你可以用隐藏元素, 能达到你的要求就行了
getTxtUpdateScore = Request("txtUpdateScore")
getIsUpdateDB = Request("isUpdateDB")
改一下就行

或者干脆不用表单提交, 使用get方式传值, 比如:
iStuUpdating.asp?txtUpdateScore=""&getSNO=""&……
[/Quote]

必须要用表单提交诶……否则还有什么意义

奇了怪了,明明已经Request过数据了,为什么到按一下Button后来就失效了呢?
kris2010 2011-12-07
  • 打赏
  • 举报
回复
你可以用隐藏元素, 能达到你的要求就行了
getTxtUpdateScore = Request("txtUpdateScore")
getIsUpdateDB = Request("isUpdateDB")
改一下就行

或者干脆不用表单提交, 使用get方式传值, 比如:
iStuUpdating.asp?txtUpdateScore=""&getSNO=""&getCNO=""
引号区使用javascript获得值
document.getElementsByName("txtUpdateScore")
....
xmlife 2011-12-07
  • 打赏
  • 举报
回复
先熟悉基础的asp,理解下运行机制
芒果仔 2011-12-07
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 kris2010 的回复:]

你有个误区啊, 前台和后台还没搞明白, 我建议你干脆全用asp写, 没这么复杂的.
[/Quote]

其实问题也很好解决,先从iStuDisplay把数据库的数据抓过来,然后在iStuUpdating中打印出来,然后再搞一个页面专门处理ASP的部分,没有任何HTML元素,把iStuUpdating中数据库的信息再抓过来,写进数据库,跳转到iStuDisplay显示出来,这样的话就多一个页面,而我希望能在一个页面内处理完所有问题,大致如此……
kris2010 2011-12-07
  • 打赏
  • 举报
回复
你有个误区啊, 前台和后台还没搞明白, 我建议你干脆全用asp写, 没这么复杂的.
hookee 2011-12-06
  • 打赏
  • 举报
回复
客户端代码和服务器代码执行的时间和地点,可用的对象都是不同的,不能混在一起。客户端代码执行的时候,服务器端代码已经执行完,不存在了。
应该 confirm后递交表单到后台。
kris2010 2011-12-06
  • 打赏
  • 举报
回复
后台代码先执行, 前台代码后执行.
你需要请求操作才能执行<% %>中的部分, 无请求, 无执行.
三石-gary 2011-12-06
  • 打赏
  • 举报
回复
不要自己觉得。。还是去调试调试。。
芒果仔 2011-12-06
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 kris2010 的回复:]

其实吧, 没太看懂你的代码, 这是一段程序还是两段程序.
如果是一段程序, 我觉得是获取不到你要的东西的.
打印时的访问: iStuDisplay.asp 提交了参数, iStuUpdating.asp 显示了正确的信息
修改时的访问: 再通过javascript 提交表单时, 不仅要传递修改的分数, 还要传递学号等信息.

JScript code
<script langua……
[/Quote]

如果这样的话,怎样把刚刚两个使用过的值再传一遍,毕竟刚刚两个Request的值getSNO和getCNO不是在Form里,而是从另一个页面中抓过来的,JS只能抓本页面Form里的值吧?难道还要再加两个hidden,将值放到这里面,再传过去?

完整的两个文件如下:

iStuDisplay.asp

<html>
<head>
<title>iStudentPlus</title>
</head>

<body>

<body style="background-color:DarkSeaGreen;">

<!--#include file="ButtonFile.inc"-->

<script language = "Javascript">

function UpdateRecord(idx)
{
document.dbForm.selectedIndex.value = idx;

document.dbForm.action = "iStuUpdating.asp";
document.dbForm.target = "_self";
document.dbForm.method = "post";
document.dbForm.submit();
}

function DeleteRecord(idx)
{
if(window.confirm("是否确定删除?") == true)
{
document.dbForm.selectedIndex.value = idx;

document.dbForm.action = "iStuDeleting.asp";
document.dbForm.target = "_self";
document.dbForm.method = "post";
document.dbForm.submit();
}
}
</script>

<%
Dim Conn, rs
Set Conn=Server.CreateObject("ADODB.Connection")
Conn.Open "provider=SQLOLEDB; Database=stumgr;data source=.;uid=sa;pwd=222222"

Set rs=Server.CreateObject("ADODB.Recordset")
SQL="SELECT STU_INFO.sno,STU_INFO.sname,STU_INFO.sclass,STU_GRADE.cno,STU_GRADE.grade "
SQL=SQL+"FROM STU_INFO INNER JOIN STU_GRADE ON STU_INFO.sno=STU_GRADE.sno ORDER BY STU_INFO.sno ASC"
rs.open SQL,Conn,1,1

Response.write("<b>成绩显示</b><br /><br />")
%>

<form name="dbForm">
<!--显示数据库查询结果,输出在页面上-->
<table width="40%" border="1" bordercolor="DarkSlateGray" cellspacing="1" cellpadding="3">
<tr bgcolor=DarkBlue >
<th><font size='2' color="White">学号</font></th>
<th><font size='2' color="White">姓名</font></th>
<th><font size='2' color="White">班级</font></th>
<th><font size='2' color="White">课程号</font></th>
<th><font size='2' color="White">成绩</font></th>

<th><font size='2' color="White">修改</font></th>
<th><font size='2' color="White">删除</font></th>
</tr>

<%
Dim idx
idx = 0
Do While Not rs.eof
idx = idx + 1

Response.Write("<td><font size='2'><input type='text' name='txtSNO"&idx&"' value='"&rs("sno")&"'/></font></td>")
Response.Write("<td><font size='2'><input type='text' name='txtSNAME"&idx&"' value='"&rs("sname")&"'/></font></td>")
Response.Write("<td><font size='2'><input type='text' name='txtSCLASS"&idx&"' value='"&rs("sclass")&"'/></font></td>")
Response.Write("<td><font size='2'><input type='text' name='txtCNO"&idx&"' value='"&rs("cno")&"'/></font></td>")
Response.Write("<td><font size='2'><input type='text' name='txtGRADE"&idx&"' value='"&rs("grade")&"'/></font></td>")

Response.write "<td><input type='button' name='btnUpdate"&idx&"' value='修改' onclick='UpdateRecord("&idx&")'></td>"
Response.write "<td><input type='button' name='btnDelete"&idx&"' value='删除' onclick='DeleteRecord("&idx&")'></td>"

Response.Write("</tr>")
rs.MoveNext
Loop

rs.close()
set rs=nothing
Conn.close()
set Conn=nothing
%>
</table>
<input type="hidden" name="selectedIndex"/>
</form>

</body>
</html>


iStuUpdating.asp

<%
Dim getSelectedIndex
Dim getSNO, getSCLASS, getSNAME, getCNO, getGRADE

'//从“iStuDisplay.asp”获取:学号、班级、课程号、成绩
getSelectedIndex = Request("selectedIndex")

getSNO = Request("txtSNO" &getSelectedIndex)
getSNAME = Request("txtSName" &getSelectedIndex)
getSCLASS = Request("txtSCLASS" &getSelectedIndex)
getCNO = Request("txtCNO" &getSelectedIndex)
getGRADE = Request("txtGRADE" &getSelectedIndex)
%>

<!--打印从“iStuDisplay.asp”获取的“学号、班级、课程号、成绩”信息-->
<b><font size = "2" color = "Maroon">您所需要修改的记录如下:</font></b><br>
<table width="40%" border="1" bordercolor="DarkSlateGray" cellspacing="1" cellpadding="3">
<tr bgcolor=DarkBlue >
<th><font size='2' color="White">学号</font></th>
<th><font size='2' color="White">姓名</font></th>
<th><font size='2' color="White">班级</font></th>
<th><font size='2' color="White">课程号</font></th>
<th><font size='2' color="White">成绩</font></th>
</tr>
<%
Response.Write("<tr bgcolor = white>")
Response.Write("<td><font size='2'>"&getSNO&"</font></td>")
Response.Write("<td><font size='2'>"&getSCLASS&"</font></td>")
Response.Write("<td><font size='2'>"&getSNAME&"</font></td>")
Response.Write("<td><font size='2'>"&getCNO&"</font></td>")
Response.Write("<td><font size='2'>"&getGRADE&"</font></td>")
Response.Write("</tr>")
%>
</table>

<html>
<body>
<body style="background-color:DarkSeaGreen;">

<script language = "Javascript">

function btnUpdateScoreCheck()
{
document.updateForm.isUpdateDB.value = false;
if (window.confirm("是否确定修改?") == true )
{
alert("!");
document.updateForm.isUpdateDB.value = true;
document.updateForm.action = "iStuUpdating.asp";
document.updateForm.target = "_self";
document.updateForm.method = "post";
document.updateForm.submit();
}
}
</script>

<form name = "updateForm">
<font size = "2">修改为:<input type = "text" name = "txtUpdateScore" size ="4" maxlength = "3"> 分 <input type = "Button" name = "btnUpdateScore" value = "点击修改" onclick = "btnUpdateScoreCheck()">
<input type = "hidden" name = "isUpdateDB">
<input type = "hidden" name = "transferSNO">
<input type = "hidden" name = "transferCNO">
</form></font>

</body>
</html>

<%
Dim getTxtUpdateScore
Dim getIsUpdateDB

getTxtUpdateScore = Request("txtUpdateScore") '获取Text框中需要修改的分数
getIsUpdateDB = Request("isUpdateDB") '获取hidden的isUpdateDB值,用于判断是否进行数据库操作

If (getIsUpdateDB) Then

'//从“iStuUpdating.asp”(即本页面)获取输入的需要修改的分数值
Dim Conn, rs
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "provider=SQLOLEDB; Database=stumgr;data source=.;uid=sa;pwd=222222"

Set rs = Server.CreateObject("ADODB.Recordset")
SQL ="UPDATE STU_GRADE SET grade = "&getTxtUpdateScore&" WHERE sno='"&getSNO&"' AND cno='"&getCNO&"'"
rs.open SQL,Conn,1,1

Conn.Close
Set Conn = Nothing

Response.Redirect "iStuDisplay.asp"

End If
%>
kris2010 2011-12-06
  • 打赏
  • 举报
回复
其实吧, 没太看懂你的代码, 这是一段程序还是两段程序.
如果是一段程序, 我觉得是获取不到你要的东西的.
打印时的访问: iStuDisplay.asp 提交了参数, iStuUpdating.asp 显示了正确的信息
修改时的访问: 再通过javascript 提交表单时, 不仅要传递修改的分数, 还要传递学号等信息.

<script language = "Javascript">

function btnUpdateScoreCheck()
{
document.updateForm.isUpdateDB.value = false;
if (window.confirm("是否确定修改?") == true )
{
alert("!");
document.updateForm.isUpdateDB.value = true;
document.updateForm.action = "iStuUpdating.asp";
document.updateForm.target = "_self";
document.updateForm.method = "post";
document.updateForm.submit();
}
}
</script>

这部分提交的只是表单中的内容, 只有分数和isUpdateDB这个变量, 所以你取不到 getSNO getCNO 这两个值.
你可以把 getSNO getCNO 放到表单里一起提交. 或者分成两段程序, 以url 方式传递参数.

一次请求 , 服务器重新执行一次, getSelectedIndex, getSNO, getSNAME ... 这些变量都要重新刷新一次.
芒果仔 2011-12-06
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 kris2010 的回复:]

以上部分是更新数据的asp 代码吗? 如果是
[code=VBrs.open] SQL,Conn,1,1[/code]
换成
VB code
Conn.execute SQL, affect_row

[/Quote]

我试过了,不行
其实我觉得不是数据库打开或者关闭操作有问题,问题是作为SQL判断语句中的Where的两个值“学号”(getSNO)和“课程号”(getCNO)没有获取成功,导致了SQL语句无效

说这两个值没有Request成功,似乎有点自相矛盾,因为之前我已经将需要修改的学生成绩记录打印出来了,最初已经Request了,如果没有Request成功,最初的记录也不会打印出来,但是问题是,第二次我要使用它们的时候,为什么它们就失效了呢?

详见代码注释部分:

<%
Dim getTxtUpdateScore
Dim getIsUpdateDB

getTxtUpdateScore = Request("txtUpdateScore") '获取Text框中需要修改的分数
getIsUpdateDB = Request("isUpdateDB") '获取hidden的isUpdateDB值,用于判断是否进行数据库操作

If (getIsUpdateDB) Then

'//从“iStuUpdating.asp”(即本页面)获取输入的需要修改的分数值
Dim Conn, rs
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "provider=SQLOLEDB; Database=stumgr;data source=.;uid=sa;pwd=222222"

Set rs = Server.CreateObject("ADODB.Recordset")
SQL ="UPDATE STU_GRADE SET grade = "&getTxtUpdateScore&" WHERE sno='"&getSNO&"' AND cno='"&getCNO&"'" '//SQL语句中的getSNO和getCNO都是空值,所以最后的Update操作失败
Conn.execute SQL, affect_row

Conn.Close
Set Conn = Nothing

Response.Redirect "iStuDisplay.asp"

End If
%>
kris2010 2011-12-06
  • 打赏
  • 举报
回复
<%
Dim getTxtUpdateScore
Dim getIsUpdateDB

getTxtUpdateScore = Request("txtUpdateScore") '获取Text框中需要修改的分数
getIsUpdateDB = Request("isUpdateDB") '获取hidden的isUpdateDB值,用于判断是否进行数据库操作

If (getIsUpdateDB) Then

'//从“iStuUpdating.asp”(即本页面)获取输入的需要修改的分数值
Dim Conn, rs
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "provider=SQLOLEDB; Database=stumgr;data source=.;uid=sa;pwd=222222"

Set rs = Server.CreateObject("ADODB.Recordset")
SQL ="UPDATE STU_GRADE SET grade = "&getTxtUpdateScore&" WHERE sno='"&getSNO&"' AND cno='"&getCNO&"'"
rs.open SQL,Conn,1,1

Conn.Close
Set Conn = Nothing

Response.Redirect "iStuDisplay.asp"

End If
%>

以上部分是更新数据的asp 代码吗? 如果是
[code=VBrs.open] SQL,Conn,1,1[/code]
换成
Conn.execute SQL, affect_row
芒果仔 2011-12-06
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ferock 的回复:]

既然来问问题,就是有疑惑咯



既然自己都不能确定,有疑惑的事情,怎么还这么固执呢?神奇了
[/Quote]

没有固执哦,我刚刚根据楼上几位的建议,又更改了代码,在<form>中增加了一个hidden的变量isUpdateDB,然后将它设为布尔型,在confirm等于true的时候,将isUpdateDB传递到Server端,让它作为判断的依据是否要执行数据库的更新操作……可是让我郁闷的是,虽然跳转到iStuDisplay页面了,但执行以后分数还是没有修改过来,那就是说Update操作失败了?我看了下SQL语句,好像也没问题,那问题出在哪儿呢?

更新后的代码如下:

<%
Dim getSelectedIndex
Dim getSNO, getSCLASS, getSNAME, getCNO, getGRADE

'//从“iStuDisplay.asp”获取:学号、班级、课程号、成绩
getSelectedIndex = Request("selectedIndex")

getSNO = Request("txtSNO" &getSelectedIndex)
getSNAME = Request("txtSName" &getSelectedIndex)
getSCLASS = Request("txtSCLASS" &getSelectedIndex)
getCNO = Request("txtCNO" &getSelectedIndex)
getGRADE = Request("txtGRADE" &getSelectedIndex)
%>

<!--打印从“iStuDisplay.asp”获取的“学号、班级、课程号、成绩”信息-->
<b><font size = "2" color = "Maroon">您所需要修改的记录如下:</font></b><br>
<table width="40%" border="1" bordercolor="DarkSlateGray" cellspacing="1" cellpadding="3">
<tr bgcolor=DarkBlue >
<th><font size='2' color="White">学号</font></th>
<th><font size='2' color="White">姓名</font></th>
<th><font size='2' color="White">班级</font></th>
<th><font size='2' color="White">课程号</font></th>
<th><font size='2' color="White">成绩</font></th>
</tr>
<%
Response.Write("<tr bgcolor = white>")
Response.Write("<td><font size='2'>"&getSNO&"</font></td>")
Response.Write("<td><font size='2'>"&getSCLASS&"</font></td>")
Response.Write("<td><font size='2'>"&getSNAME&"</font></td>")
Response.Write("<td><font size='2'>"&getCNO&"</font></td>")
Response.Write("<td><font size='2'>"&getGRADE&"</font></td>")
Response.Write("</tr>")
%>
</table>

<html>
<body>
<body style="background-color:DarkSeaGreen;">

<script language = "Javascript">

function btnUpdateScoreCheck()
{
document.updateForm.isUpdateDB.value = false;
if (window.confirm("是否确定修改?") == true )
{
alert("!");
document.updateForm.isUpdateDB.value = true;
document.updateForm.action = "iStuUpdating.asp";
document.updateForm.target = "_self";
document.updateForm.method = "post";
document.updateForm.submit();
}
}
</script>

<form name = "updateForm">
<font size = "2">修改为:<input type = "text" name = "txtUpdateScore" size ="4" maxlength = "3"> 分 <input type = "Button" name = "btnUpdateScore" value = "点击修改" onclick = "btnUpdateScoreCheck()">
<input type = "hidden" name = "isUpdateDB">
</form></font>

</body>
</html>

<%
Dim getTxtUpdateScore
Dim getIsUpdateDB

getTxtUpdateScore = Request("txtUpdateScore") '获取Text框中需要修改的分数
getIsUpdateDB = Request("isUpdateDB") '获取hidden的isUpdateDB值,用于判断是否进行数据库操作

If (getIsUpdateDB) Then

'//从“iStuUpdating.asp”(即本页面)获取输入的需要修改的分数值
Dim Conn, rs
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "provider=SQLOLEDB; Database=stumgr;data source=.;uid=sa;pwd=222222"

Set rs = Server.CreateObject("ADODB.Recordset")
SQL ="UPDATE STU_GRADE SET grade = "&getTxtUpdateScore&" WHERE sno='"&getSNO&"' AND cno='"&getCNO&"'"
rs.open SQL,Conn,1,1

Conn.Close
Set Conn = Nothing

Response.Redirect "iStuDisplay.asp"

End If
%>
兼哲 2011-12-06
  • 打赏
  • 举报
回复
既然来问问题,就是有疑惑咯



既然自己都不能确定,有疑惑的事情,怎么还这么固执呢?神奇了
芒果仔 2011-12-06
  • 打赏
  • 举报
回复
JS部分漏了一点东西,我的想法其实是:

<script language = "Javascript">

function btnUpdateScoreCheck()
{
document.updateForm.isUpdateDB = false;
if (window.confirm("是否确定修改?") == true )
{
document.updateForm.isUpdateDB.value = true;
document.updateForm.action = "iStuUpdating.asp";
document.updateForm.target = "_self";
document.updateForm.method = "post";
document.updateForm.submit();
}
}
</script>
芒果仔 2011-12-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 kris2010 的回复:]

你咋就不明白尼, asp是后台代码, 在服务器上执行的, js是前台代码, 在浏览器执行的.
你的js判断部分是浏览器判断的, 其中的asp是不会运行的.
[/Quote]

现在我有想个办法,在Text和Button后面加了一个<input type = "hidden" name = "isUpdateDB">

然后在JS里先让它 document.updateForm.isUpdateDB = false;

然后在confirm中

		if (window.confirm("是否确定修改?") == true )
{
document.updateForm.isUpdateDB = true;
document.updateForm.action = "iStuUpdating.asp";
document.updateForm.target = "_self";
document.updateForm.method = "post";
document.updateForm.submit();
}


这样通过submit()传过去,然后在ASP部分用 If (isUpdateDB = true) Then 来执行数据库修改操作

但是……最终还是报错,这次我是在浏览器端将变量传到Server端然后再判断,这总没错吧?为什么还报错呢

修改后的代码如下:

<%
Dim getSelectedIndex
Dim getSNO, getSCLASS, getSNAME, getCNO, getGRADE

'//从“iStuDisplay.asp”获取:学号、班级、课程号、成绩
getSelectedIndex = Request("selectedIndex")

getSNO = Request("txtSNO" &getSelectedIndex)
getSNAME = Request("txtSName" &getSelectedIndex)
getSCLASS = Request("txtSCLASS" &getSelectedIndex)
getCNO = Request("txtCNO" &getSelectedIndex)
getGRADE = Request("txtGRADE" &getSelectedIndex)
%>

<!--打印从“iStuDisplay.asp”获取的“学号、班级、课程号、成绩”信息-->
<b><font size = "2" color = "Maroon">您所需要修改的记录如下:</font></b><br>
<table width="40%" border="1" bordercolor="DarkSlateGray" cellspacing="1" cellpadding="3">
<tr bgcolor=DarkBlue >
<th><font size='2' color="White">学号</font></th>
<th><font size='2' color="White">姓名</font></th>
<th><font size='2' color="White">班级</font></th>
<th><font size='2' color="White">课程号</font></th>
<th><font size='2' color="White">成绩</font></th>
</tr>
<%
Response.Write("<tr bgcolor = white>")
Response.Write("<td><font size='2'>"&getSNO&"</font></td>")
Response.Write("<td><font size='2'>"&getSCLASS&"</font></td>")
Response.Write("<td><font size='2'>"&getSNAME&"</font></td>")
Response.Write("<td><font size='2'>"&getCNO&"</font></td>")
Response.Write("<td><font size='2'>"&getGRADE&"</font></td>")
Response.Write("</tr>")
%>
</table>

<html>
<body>
<body style="background-color:DarkSeaGreen;">

<form name = "updateForm">
<font size = "2">修改为:<input type = "text" name = "txtUpdateScore" size ="4" maxlength = "3"> 分 <input type = "Button" name = "btnUpdateScore" value = "点击修改" onclick = "btnUpdateScoreCheck()">
<input type = "hidden" name = "isUpdateDB">
</form></font>

<script language = "Javascript">

function btnUpdateScoreCheck()
{
document.updateForm.isUpdateDB = false;
if (window.confirm("是否确定修改?") == true )
{
document.updateForm.isUpdateDB = true;
document.updateForm.action = "iStuUpdating.asp";
document.updateForm.target = "_self";
document.updateForm.method = "post";
document.updateForm.submit();
}
}
</script>

</body>
</html>

<%
If (isUpdateDB = true) Then

Dim getSelectedIndex
Dim getSNO, getSCLASS, getSNAME, getCNO, getGRADE

getSelectedIndex = Request("selectedIndex")
getSNO = Request("txtSNO" &getSelectedIndex)
getSCLASS = Request("txtSCLASS" &getSelectedIndex)
getCNO = Request("txtCNO" &getSelectedIndex)
getGRADE = Request("txtGRADE" &getSelectedIndex)

'//从“iStuUpdating.asp”(即本页面)获取输入的需要修改的分数值
Dim getTxtUpdateScore
getTxtUpdateScore = Request("txtUpdateScore")

Dim Conn, rs
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "provider=SQLOLEDB; Database=stumgr;data source=.;uid=sa;pwd=222222"

Set rs = Server.CreateObject("ADODB.Recordset")
SQL ="UPDATE STU_GRADE SET grade = "&getTxtUpdateScore&" WHERE sno = '"&getSNO&"' AND cno = '"&getCNO&"' AND grade = "&getGRADE
rs.open SQL,Conn,1,1

Conn.Close
Set Conn = Nothing

Response.Redirect "iStuDisplay.asp"

End If
%>
kris2010 2011-12-06
  • 打赏
  • 举报
回复
你咋就不明白尼, asp是后台代码, 在服务器上执行的, js是前台代码, 在浏览器执行的.
你的js判断部分是浏览器判断的, 其中的asp是不会运行的.
芒果仔 2011-12-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hookee 的回复:]

客户端代码和服务器代码执行的时间和地点,可用的对象都是不同的,不能混在一起。客户端代码执行的时候,服务器端代码已经执行完,不存在了。
应该 confirm后递交表单到后台。
[/Quote]

我不太明白的是,假如把JS中那段ASP代码放到最后,那它肯定会顺序执行下去了吧?就是说,我Text中没有输入任何数据,它也给传递过去,然后运行,这样肯定是要报错的

我之所以将它插入到confirm中,就是想让输入信息并点击Button之后再去执行这一段,最后完成跳转

28,391

社区成员

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

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