出现的错误:
在传值的时候发生传过去的值为null,各种调试都正常,但就是不出现值;
最后发现:在发送请求处出现问题---在这一步出现问题
我以前的写法:第一种错误写法:xmlhttp.send("username = "+username);
第二种错误写法:导致传值不过去:xmlhttp.send("username=username");
修改之后的正确写法:xmlhttp.send("username="+username); (长记性!!!!)
用户名 | ||
密码 | ||
function checkUsername(obj){
var username = obj.value;
//alert(username);
//1.编写核心对象
xmlhttp=null;
if (window.XMLHttpRequest){// code for Firefox, Opera, IE7, etc.
xmlhttp=new XMLHttpRequest();
}
else if (window.ActiveXObject){// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
//2.编写回调函数
xmlhttp.onreadystatechange = function(){
if ( xmlhttp.readyState == 4 && xmlhttp.status == 200 ) {
alert(xmlhttp.responseText);
if (xmlhttp.responseText == 0 ) {
document.getElementById("username_msg").innerHTML="用户名可以使用";
document.getElementById("sub").disabled=false;
} else {
document.getElementById("username_msg").innerHTML="用户名已被占用";
//提交按钮不可使用
document.getElementById("sub").disabled=true;
}
}
}
//3.编写请求地址和请求参数
xmlhttp.open("post","${pageContext.request.contextPath}/registerServlet");
//4.发送请求
//设置请求头 注意:如果你的请求方式为post,并且发送的数据在send里面执行,那么就要设置请求头,不然为null
xmlhttp.setRequestHeader("content-type", "application/x-www-form-urlencoded");
xmlhttp.send("username="+username);
}
public class RegisterServlet extends HttpServlet {
private static final long serialVersionUID = 1829647009178241100L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException {
//设置编码
//获取用户名
request.setCharacterEncoding("utf-8");
String username = request.getParameter("username");
System.out.println(username);
User user = null;
try {
//调用业务层
user = new UserService().checkUsername4Ajax(username);
System.out.println(user);
if (user != null) {
response.getWriter().println("1");
} else {
response.getWriter().println("0");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
public class UserService {
//调用持久层,查询用户名是否被占用
public static User checkUsername4Ajax(String username) throws SQLException {
return new UserDao().checkUsername4Ajax(username);
}
}
public class UserDao {
public static User checkUsername4Ajax(String username) throws SQLException {
//System.out.println(username);
QueryRunner qr = new QueryRunner(DataSourceUtils.getDataSource());
String sql = "select * from t_user where username= ? limit 1";
return qr.query(sql, new BeanHandler(User.class),username);
}
}