如题,我的做法是:确认框提示,再根据确认框返回的结果判断,代码如下:
<%
dim conn,sql
set conn = server.createobject("adodb.connection")
sql = "driver={sql server};server=(local);uid=sa;pwd=tong0yu;database=information;"
conn.open(sql)dim del_inf,del_id,del_open
set del_inf = server.createobject("adodb.recordset")
del_id = request.querystring("p_id")
del_open = "delete from applyInf where p_id=" & del_id
%>
<script type="text/javascript">
var del_sure
del_sure = confirm("确认删除信息?")
if(del_sure == false){
window.location.href = "save.asp";
}
else if(del_sure == true){
<%conn.execute(del_open)%>
alert("信息已删除");
window.location.href = "save.asp";
}
</script>
可是,这样的结果不论点确定或者取消,都会删除记录,各位有什么好的解决办法没有

解决方案 »

  1.   


    很明显,楼主javascript语法不熟悉吧,不是要求要";"结尾的!!!<script type="text/javascript">
        var del_sure;
        del_sure = confirm("确认删除信息?");
        if (del_sure == false) {
            alert("test");
            //window.location.href = "save.asp";
        } else if (del_sure == true) {
            alert("信息已删除");
            //window.location.href = "save.asp";
        }
    </script>
      

  2.   

    这样的写法应该是在弹出确认按钮之前已经删除数据了。加个判断吧!<%
    dim conn,sql,isdelete
    set isdelete = request.querystring("isdelete"); --最好设置默认值为0set conn = server.createobject("adodb.connection")
    sql = "driver={sql server};server=(local);uid=sa;pwd=tong0yu;database=information;"
    conn.open(sql)
    if isdelete == 1 
    {
    dim del_inf,del_id,del_open
    set del_inf = server.createobject("adodb.recordset")
    del_id = request.querystring("p_id")
    del_open = "delete from applyInf where p_id=" & del_id
    }
    %>
    <script type="text/javascript">
    var del_sure
    del_sure = confirm("确认删除信息?")
    if(del_sure == false){
        window.location.href = "save.asp?isdelete=0";
    }
    else if(del_sure == true){
        <%conn.execute(del_open)%>
        alert("信息已删除");
        window.location.href = "save.asp?isdelete=1";
    }
    </script>
    大概是这样,具体的语法不是很清楚。
      

  3.   

    <%
    else if(del_sure == true){
        <%conn.execute(del_open)%>
        alert("信息已删除");
        window.location.href = "save.asp";
    }
    </script>楼主对asp运行的机制了解有问题,iis是先解释<% %>标记中的内容,把结果返回给iis,iis就负责把内容传送到请求的客户端,你的del_open应该是删除记录的存储过程吧,所以iis在收到你的这个请求后会先去运行这个存储过程,然后返回给你页面也就是说 只要你这个页面加载了,记录就已经被删除了 而不存在yes or no的问题.建议把删除记录之类的sql操作语句(存储过程)单独做一个页面,比如del.asp 然后用户回答yes的时候定位到del.asp,回答no的时候什么都不做
      

  4.   

    小猪 你早点咋不来 害我白忙活了一上午啊  %>_<%
    哎 不过算是明白了咋回事
    谢谢 猪猪 O(∩_∩)O~
      

  5.   

    嗯 楼上的 你的代码我试过啊
        window.location.href = "save.asp?isdelete=0";
        window.location.href = "save.asp?isdelete=1";

    但是这个地方有问题啊 传递isdelete这个变量有什么用呢? 
    因为上面的判断条件
    if isdelete == 1 
    在同一个页面,你这样传递的话根本没有意义
    下面的代码也无法执行
    感觉确实如8楼所说 判断和执行分成两个页面做会比较好
      

  6.   

    不可以跳转到本页面吗?你的save.asp页面不是指本页面是吧?
    那可以把save.asp换成本页面了。一个道理。
      

  7.   

    嗯 是这样的
    我帖出来的是执行删除的页面,这个页面是由显示信息的页面点击“删除按钮”跳转的
    执行完后我希望回到显示信息的页面
    可是,你代码中的这句:
    set isdelete = request.querystring("isdelete"); --最好设置默认值为0
    其中isdelete的值,是由确认框返回的值传递的。也就是说,下面的代码先执行过,上面的判断才有值。并且,上面是asp代码,需要编译。所以,感觉这个地方是矛盾的。
      

  8.   


    不矛盾啊!你转到这个页面的时候在URL中不可以传一个isdelete=0吗?获取到的是0 也就是不执行删除的代码了。点确认的时候传递一个isdelete=1 就可以执行删除的命令了。同理,点取消传isdelete=0
      

  9.   

    oh NO ,楼上的,我不知道我们俩是哪儿的分歧,但你这个我再次测试了,是不可行的
    主要应该还是跟asp需要编译有关
    if isdelete == 1 
    {
    dim del_inf,del_id,del_open
    set del_inf = server.createobject("adodb.recordset")
    del_id = request.querystring("p_id")
    del_open = "delete from applyInf where p_id=" & del_id
    }
    %>
    <script type="text/javascript">
    var del_sure
    del_sure = confirm("确认删除信息?")
    if(del_sure == false){
        window.location.href = "save.asp?isdelete=0";
    }
    else if(del_sure == true){
        <%conn.execute(del_open)%>上面代码中,你的第一个判断语句,如你所说,当给isdelete传递0时,红色部分的代码会报错的
    因为这部分代码需要预先编译的
      

  10.   

    汗 忘了SQL模式不能添加颜色
    也就是最后一句代码
      

  11.   

    哦!这次看清楚了,应该是这样的。if isdelete == 1 
    {
    dim del_inf,del_id,del_open
    set del_inf = server.createobject("adodb.recordset")
    del_id = request.querystring("p_id")
    del_open = "delete from applyInf where p_id=" & del_id
    conn.execute(del_open)
    }
    下面的脚本中的<%conn.execute(del_open)%>就可以去掉了。
    不好意思,是我没有看仔细,你的执行语句在脚本的判断语句下面。改成我上面说的那样就可以了。这只是一种实现方式而已,个人处理问题的风格不同而已。
      

  12.   

    <script type="text/javascript">
    var del_sure
    del_sure = confirm("确认删除信息?")
    if(del_sure == false){
        window.location.href = "save.asp";
    }
    else if(del_sure == true){
        <%conn.execute(del_open)%>
        alert("信息已删除");
        window.location.href = "save.asp";
    }
    </script>楼主js脚本不能这<%conn.execute(del_open)%>