刚学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";
}
}
我想做一个密码修改的页面 让修改密码的人 填入原密码 通过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";
}
}
解决方案 »
- myeclipse发布工程时,出现错误,无法解决,各位帮帮忙
- hibernate了解多少
- jsp初学者------需要大家来帮忙解答一下
- Struts DataSource Manger 能查询数据, 但不能更新数据??
- jsp 的朋友快帮忙了!!
- 求无刷新聊天室中的控制滚屏代码!
- 国庆促销JSP空间 200MWEB+200M MYSQL 200/年,欲购从速
- 招聘北京JSP程序员,待遇优厚,有兴趣联系
- Help!! 如何在JSP中实现类似于树形的控件!!!
- 请各位高手解救(Jbuilder编写Jsp问题)
- 数据库登录不了,怎么办?
- FCK上传时出现的问题:the server didn't send back a proper XML response.
http://www.sogou.com/labs/reports.html
给个思路:在submit之前判断下取出来的原密码跟输入的原密码是否一样,如果不一样,就不允许submit。
能不能教教 怎么不允许submit吗 不好意思 呵呵
<%@ 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";
}
}写的好乱啊!!