我的程序是,当向数据库中插入记录是,如果数据库中有这条记录了(有唯一标示)。就弹出javascript的confirm提示框,询问用户是否更新数据库中的记录,如果用户选择是就更新,如果选择否就不更新,退回到前一个页面,保留原记录,该怎么实现?我现在的程序是这样的。
....
....
....
String sql="";
if(rs.next())
{
   out.println("<script language=\"javascript\">");
   out.println("if(confirm(\"记录存在,是否更新?\")==false");
   out.println("window.hiostory.go(-1);");
   sql="update table ... ...";
}
else
{
   sql="insert into table values(....)"
}
可是不管用户选择是还是选择否,都会更新记录啊,请贴出代码。

解决方案 »

  1.   

    String sql="";
    if(rs.next())
    {
       out.println("<script language=\"javascript\">");
       out.println("if(confirm(\"记录存在,是否更新?\")==false){");
       out.println("window.hiostory.go(-1);}");
       out.println("else{...}");//这里做提交后台的操作
    //   这里应该直接return
    //   sql="update table ... ...";
    }
    else
    {
       sql="insert into table values(....)"
    }
      

  2.   

    这段代码逻辑非常混乱,最好用MVC模式做
      

  3.   

    如果是要更新记录的话,就要重新提交一次给本页面,增加个参数.因为JSP是服务器产生的语句.JS是客户端的.
      

  4.   

    echomyf(ECHO) 正解  如果你要这么写的话
      

  5.   

    <%@ page contentType="text/html;charset=gbk" language="java"%>
    <html>
    <body>
    kdkdkdk
    <script>
    function kk(){
    alert("kk");
    if(confirm('update&pound;&iquest;')==false){
    window.location.href='tt.jsp?op=insert';
    }else{
    window.location.href='tt.jsp?op=update';
    }
    }
    </script>
    <%
    String op = request.getParameter("op");
    if(op==null)op="";
    String sql="ggg";
    if( 1==1&&(! op.equals("insert")) ){
    out.println("if:"+sql);
    %><script>
     kk();
    </script><%
       sql="update table ... ...";
    }else{
    out.println("else"+sql);
       sql="insert into table values(....)";
    }
    out.println("end:"+sql);
    %>
    </body>
    </html>
      

  6.   

    因为要重新执行JSP,必须提交到服务器才能执行.
    但如果只是要SQL传到另一个页面去处理就改为:
    <script>
    function kk(){
    if(confirm('update&pound;&iquest;')==false){
    var sql = 'update table ... ...';
    }else{
    var sql = 'insert table ... ...';
    }
    alert(sql);
    }
    </script>