刚学Ajax 好多地方不明白 请大神指点我这小菜鸟
   
   我想做一个密码修改的页面   让修改密码的人 填入原密码 通过Ajax校验原密码  如果不符合原密码就 禁止提交但是现在填入原密码 可以校验出来是否为原密码 但是密码错误的时候却不能阻止SUBMIT 帮忙看看 谢谢啦JSP 代码部分:
 <%@ page language="java" import="java.sql.*" pageEncoding="gb2312"%>
<%@ page import="jdbc.*"%>
<%Conn conn= new Conn();
String username=request.getParameter("username");
String sql="select * from user_table where username=?";
ResultSet rs=conn.SQLquery(sql,username);
rs.next();
String truename=rs.getString("truename");
String password=rs.getString("password");
String position=rs.getString("position");
%>
<form method="post" action="password" name="frm" onsubmit="return func2()">
<table border="0" align="center">
<tr>
<td width="180"></td>
<td>用户姓名:</td>
<td><%=truename%></td>
<td width="180"></td>
</tr>
<tr>
<td><input type="hidden" name="username" id="username" maxlength="20" value=<%=username%>></td>
</tr>
<tr>
<td width="180"></td>
<td>用户账户:</td>
<td><%=username%></td>
<td width="180"></td>
</tr>
<tr>
<td width="180"></td>
<td>管理权限:</td>
<td><%=position%></td>
<td width="180"></td>
</tr>
<tr>
<td width="180"></td>
<td>账户原密码:</td>
<td><input type="password" name="password" id="password" maxlength="20" onblur="validate()"></td>
<td width="180"><span id="info"></span></td>
</tr>
<tr>
<td width="180"></td>
<td>修改后密码:</td>
<td><input type="password" name="password1" id="password1" maxlength="20" onblur="func2()"></td>
<td width="180"><span id="pwd1"></span></td>
</tr>
<tr>
<td width="180"></td>
<td>请确认密码:</td>
<td><input type="password" name="password2" id="password2" maxlength="20" onblur="func3()"></td>
<td width="180"><span id="pwd2"></span></td>
</tr>
<tr>
<td width="180"></td>
<td><input type="submit" value=" 提 交 "></td>
<td><input type="reset" value=" 重 置 " onclick="return confirm('您确认要重置吗?');"></td>
<td width="180"></td>
</tr>
</table>
<script>
function func2(){
var password1=frm.password1.value;
if(password1==""){
var ps1="<font color='red'>× 密码不能为空!</font>";
document.getElementById("pwd1").innerHTML=ps1;
return false;
}
else{
var pp="<font color='green'>√</font>";
document.getElementById("pwd1").innerHTML=pp;
return func3();
return true;
}
}
</script>
<script>
function func3(){
var password1=frm.password1.value;
var password2=frm.password2.value;
if(password2==""){
var ps2="<font color='red'>× 重复密码不能为空!</font>";
document.getElementById("pwd2").innerHTML=ps2;
return false;
}
else if(password1!=password2){
var pp2="<font color='red'>× 两次密码填写不匹配!</font>";
document.getElementById("pwd2").innerHTML=pp2;
return false;
}
else{
var pp1="<font color='green'>√ </font>";
document.getElementById("pwd2").innerHTML=pp1;
return validate();}
}
</script>
 
 <script type="text/javascript">
   var req;
            function validate() {
                //获取表单提交的内容
                var idField = document.getElementById("password");
                var username = document.getElementById("username");
                //访问validate.do这个servlet,同时把获取的表单内容idField加入url字符串,以便传递给validate.do
                var url = "passwordupdate?id=" + escape(idField.value) + "&username=" + escape(username.value);
                //创建一个XMLHttpRequest对象req
                if(window.XMLHttpRequest) {
                    //IE7, Firefox, Opera支持
                    req = new XMLHttpRequest();
                }else if(window.ActiveXObject) {
                    //IE5,IE6支持
                    req = new ActiveXObject("Microsoft.XMLHTTP");
                }
                /*
                 open(String method,String url, boolean )函数有3个参数
                 method参数指定向servlet发送请求所使用的方法,有GET,POST等
                 boolean值指定是否异步,true为使用,false为不使用。
                 我们使用异步才能体会到Ajax强大的异步功能。
                 */
                req.open("GET", url, true);
                //onreadystatechange属性存有处理服务器响应的函数,有5个取值分别代表不同状态
                req.onreadystatechange = callback;
                //send函数发送请求
                req.send(null);   
            }
            </script>
             <script>
            function callback() {
                if(req.readyState == 4 && req.status == 200) {
                    var check = req.responseText;
                    return show(check);
                }
            }
            </script>
             <script>
            function show(str) {
              
                if(str == "OK") {
                    var show = "<font color='green'>√</font>";
                    document.getElementById("info").innerHTML = show;
                    return true;
                }
                else if( str == "NO") {
                    var show = "<font color='red'>×密码填写不正确</font>";
                    document.getElementById("info").innerHTML = show;
                    return false;
                }
            }
            </script> 
</form>
  
Servlet 代码部分:    package ajax;import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.sql.SQLException;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import jdbc.Conn;public class Servlet_passwordupdate extends HttpServlet {
private static final long serialVersionUID = 1L;
public Servlet_passwordupdate() {
super();
}
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=gb2312");
        PrintWriter out = response.getWriter();
        response.setHeader("Cache-Control", "no-store");
        response.setHeader("Pragma", "no-cache");
        response.setDateHeader("Expires", 0);
        String password = request.getParameter("id");
        String username = request.getParameter("username");
        System.out.println(password);
        System.out.println(username);
        Conn conn=new Conn();
        String sql="select * from user_table where username=? and password=?";
        ResultSet rs=conn.SQLquery(sql,username,password);
        try {
if(rs.next()){
  out.write("OK");
            }
            else {
                out.write("NO");
            } } catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
out.close();
 }
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
processRequest(request, response);
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
processRequest(request, response);
out.close();
}
public void init() throws ServletException {
// Put your code here
}
 @Override
    public String getServletInfo() {
        return "Short description";
    }
}

解决方案 »

  1.   

    给个轻量级的AJAX库给你吧,在搜狗实验室下载的--轻量级AJAX库,使用很简单...
    http://www.sogou.com/labs/reports.html
      

  2.   

    代码太乱了。没看完。
    给个思路:在submit之前判断下取出来的原密码跟输入的原密码是否一样,如果不一样,就不允许submit。
      

  3.   


    能不能教教 怎么不允许submit吗  不好意思 呵呵
      

  4.   

    是不是你的func2()返回的都为true?
      

  5.   

    我想做一个密码修改的页面 让修改密码的人 填入原密码 通过Ajax校验原密码 如果不符合原密码就 禁止提交但是现在填入原密码 可以校验出来是否为原密码 但是密码错误的时候却不能阻止SUBMIT 帮忙看看 谢谢啦JSP 代码部分:
     <%@ page language="java" import="java.sql.*" pageEncoding="gb2312"%>
    <%@ page import="jdbc.*"%>
    <%Conn conn= new Conn();
    String username=request.getParameter("username");
    String sql="select * from user_table where username=?";
    ResultSet rs=conn.SQLquery(sql,username);
    rs.next();
    String truename=rs.getString("truename");
    String password=rs.getString("password");
    String position=rs.getString("position");
    %>
    <form method="post" action="password" name="frm" onsubmit="return func2()">
    <table border="0" align="center">
    <tr>
    <td width="180"></td>
    <td>用户姓名:</td>
    <td><%=truename%></td>
    <td width="180"></td>
    </tr>
    <tr>
    <td><input type="hidden" name="username" id="username" maxlength="20" value=<%=username%>></td>
    </tr>
    <tr>
    <td width="180"></td>
    <td>用户账户:</td>
    <td><%=username%></td>
    <td width="180"></td>
    </tr>
    <tr>
    <td width="180"></td>
    <td>管理权限:</td>
    <td><%=position%></td>
    <td width="180"></td>
    </tr>
    <tr>
    <td width="180"></td>
    <td>账户原密码:</td>
    <td><input type="password" name="password" id="password" maxlength="20" onblur="validate()"></td>
    <td width="180"><span id="info"></span></td>
    </tr>
    <tr>
    <td width="180"></td>
    <td>修改后密码:</td>
    <td><input type="password" name="password1" id="password1" maxlength="20" onblur="func2()"></td>
    <td width="180"><span id="pwd1"></span></td>
    </tr>
    <tr>
    <td width="180"></td>
    <td>请确认密码:</td>
    <td><input type="password" name="password2" id="password2" maxlength="20" onblur="func3()"></td>
    <td width="180"><span id="pwd2"></span></td>
    </tr>
    <tr>
    <td width="180"></td>
    <td><input type="submit" value=" 提 交 "></td>
    <td><input type="reset" value=" 重 置 " onclick="return confirm('您确认要重置吗?');"></td>
    <td width="180"></td>
    </tr>
    </table>
    <script>
    function func2(){
    var password1=frm.password1.value;
    if(password1==""){
    var ps1="<font color='red'>× 密码不能为空!</font>";
    document.getElementById("pwd1").innerHTML=ps1;
    return false;
    }
    else{
    var pp="<font color='green'>√</font>";
    document.getElementById("pwd1").innerHTML=pp;
    return func3();
    return true;

    }
    }
    </script>
    <script>
    function func3(){
    var password1=frm.password1.value;
    var password2=frm.password2.value;
    if(password2==""){
    var ps2="<font color='red'>× 重复密码不能为空!</font>";
    document.getElementById("pwd2").innerHTML=ps2;
    return false;
    }
    else if(password1!=password2){
    var pp2="<font color='red'>× 两次密码填写不匹配!</font>";
    document.getElementById("pwd2").innerHTML=pp2;
    return false;
    }
    else{
    var pp1="<font color='green'>√ </font>";
    document.getElementById("pwd2").innerHTML=pp1;
    return validate();}
    }
    </script>
      
     <script type="text/javascript">
    var req;
      function validate() {
      //获取表单提交的内容
      var idField = document.getElementById("password");
      var username = document.getElementById("username");
      //访问validate.do这个servlet,同时把获取的表单内容idField加入url字符串,以便传递给validate.do
      var url = "passwordupdate?id=" + escape(idField.value) + "&username=" + escape(username.value);
      //创建一个XMLHttpRequest对象req
      if(window.XMLHttpRequest) {
      //IE7, Firefox, Opera支持
      req = new XMLHttpRequest();
      }else if(window.ActiveXObject) {
      //IE5,IE6支持
      req = new ActiveXObject("Microsoft.XMLHTTP");
      }
      /*
      open(String method,String url, boolean )函数有3个参数
      method参数指定向servlet发送请求所使用的方法,有GET,POST等
      boolean值指定是否异步,true为使用,false为不使用。
      我们使用异步才能体会到Ajax强大的异步功能。
      */
      req.open("GET", url, true);
      //onreadystatechange属性存有处理服务器响应的函数,有5个取值分别代表不同状态
      req.onreadystatechange = callback;
      //send函数发送请求
      req.send(null);   
      }
      </script>
      <script>
      function callback() {
      if(req.readyState == 4 && req.status == 200) {
      var check = req.responseText;
      return show(check);
      }
      }
      </script>
      <script>
      function show(str) {
        
      if(str == "OK") {
      var show = "<font color='green'>√</font>";
      document.getElementById("info").innerHTML = show;
      return true;
      }
      else if( str == "NO") {
      var show = "<font color='red'>×密码填写不正确</font>";
      document.getElementById("info").innerHTML = show;
      return false;
      }
      }
      </script>  
    </form>
       
    Servlet 代码部分:  package ajax;import java.io.IOException;
    import java.io.PrintWriter;
    import java.sql.ResultSet;
    import java.sql.SQLException;import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;import jdbc.Conn;public class Servlet_passwordupdate extends HttpServlet {
    private static final long serialVersionUID = 1L;
    public Servlet_passwordupdate() {
    super();
    }
    public void destroy() {
    super.destroy(); // Just puts "destroy" string in log
    // Put your code here
    }
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      response.setContentType("text/html;charset=gb2312");
      PrintWriter out = response.getWriter();
      response.setHeader("Cache-Control", "no-store");
      response.setHeader("Pragma", "no-cache");
      response.setDateHeader("Expires", 0);
      String password = request.getParameter("id");
      String username = request.getParameter("username");
      System.out.println(password);
      System.out.println(username);
      Conn conn=new Conn();
      String sql="select * from user_table where username=? and password=?";
      ResultSet rs=conn.SQLquery(sql,username,password);
      try {
    if(rs.next()){
    out.write("OK");
      }
      else {
      out.write("NO");
      }} catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    out.close();
     }
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {response.setContentType("text/html;charset=gb2312");
    PrintWriter out = response.getWriter();
    processRequest(request, response);
    out.close();
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {response.setContentType("text/html;charset=gb2312");
    PrintWriter out = response.getWriter();
    processRequest(request, response);
    out.close();
    }
    public void init() throws ServletException {
    // Put your code here
    }
    @Override
    public String getServletInfo() {
    return "Short description";
    }
    }写的好乱啊!!