为什么想要在Javascript中插入ASP的代码无法执行呢?
这里我用到两个页面,第一个是用来显示学生信息的,包括学号、姓名、班级、课程号、成绩,然后显示出来以后在每条记录最右边动态生成两个按钮,一个是修改,一个是删除。目前删除已经没问题,问题就在修改。
在修改的页面,我首先抓取"iStuDisplay.asp"这个页面中数据库里的数据,将“学号、姓名等”信息先显示出来,然后下面有一个Text框,一个Button按钮,Text框输入需要修改的分数,Button提交。
问题就出现在这里,我的设想是输入框中输入完数据后,本页面再次抓取Text框中的内容,然后用ASP来处理,处理完了用"Response.Redirect"跳转到"iStuDisplay.asp"显示修改完的内容。我把这段数据库操作的ASP代码插入在window.confirm()中,点击“是”就执行,“否”就不执行。但是发现无法执行,这是为什么呢?难道需要其它方法来控制数据库操作的执行?
报错的信息是”发生了未处理的异常(“关键字'WHERE'附近有语法错误。”),发生位置是w3wp.exe[4676]。我不觉得SQL语句有什么问题啊
如果在JS中判断是否执行这段ASP代码,怎么改比较好呢?
代码如下:
- HTML code
<% 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>
[解决办法]
不要自己觉得。。还是去调试调试。。
[解决办法]
后台代码先执行, 前台代码后执行.
你需要请求操作才能执行<% %>中的部分, 无请求, 无执行.
[解决办法]
客户端代码和服务器代码执行的时间和地点,可用的对象都是不同的,不能混在一起。客户端代码执行的时候,服务器端代码已经执行完,不存在了。
应该 confirm后递交表单到后台。
[解决办法]
你咋就不明白尼, asp是后台代码, 在服务器上执行的, js是前台代码, 在浏览器执行的.
你的js判断部分是浏览器判断的, 其中的asp是不会运行的.
[解决办法]
既然来问问题,就是有疑惑咯
既然自己都不能确定,有疑惑的事情,怎么还这么固执呢?神奇了
[解决办法]
- VB code
<% 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%>
[解决办法]
其实吧, 没太看懂你的代码, 这是一段程序还是两段程序.
如果是一段程序, 我觉得是获取不到你要的东西的.
打印时的访问: iStuDisplay.asp 提交了参数, iStuUpdating.asp 显示了正确的信息
修改时的访问: 再通过javascript 提交表单时, 不仅要传递修改的分数, 还要传递学号等信息.
而
- JScript code
<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>