2 cp19922011 cp19922011 于 2016.04.08 18:41 提问

js中使用ajax函数做同步请求Servlet连接数据库进行验证

这是一个js表单验证,验证email的部分,我想达到的目的是在输入email信息结束后进行验证,前两个条件直接自身进行验证,效果已经实现了,后面的那个我想用ajax的效果进行同步验证,防止email重复,但是效果一直出不来,不知道是否是ajax函数参数设置有问题什么的,或者eclipse出bug什么的,请问有人帮忙看一下的么?
email输入部分代码:


Email:
id="email" class="input" value="" />



js代码如下:
function validateEmail() {
$("#emailError").css("display", "none");
var bool = true;
var val = $("#email").val();
if(!val) {
$("#emailError").text("Email不能为空!");
$("#emailError").css("display", "");
bool = false;
} else if(!/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(val)) {
$("#emailError").text("错误的Email格式!");
$("#emailError").css("display", "");

bool = false;
} else {
$.ajax({
url:"/goods/UserServlet",
data:{method:"ajaxValidateEmail",email:value},
type:"POST",
dataType:"json",
async:false,
cache:false,
success:function(result){
if(!result){
$("#emailError").text("该邮箱已经被注册了");
$("#emailError").css("display", "");
bool = false;
}
}
});
}
return bool;
}

请求的Servlet的函数如下:
public void ajaxValidateEmail(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String email = request.getParameter("email");
boolean emailPass = userService.ajaxValidateEmail(email);
response.getWriter().print(emailPass);
}

service部分:
public boolean ajaxValidateEmail(String email){
return userDao.ajaxValidateLoginname(email);
}

数据库层代码:
public boolean ajaxValidateEmail(String email){
String sql = "select count(1) from t_user where email=?";
try {
Number number = (Number)queryRunner.query(sql, new ScalarHandler(), email);
return number.intValue() == 0;
} catch (SQLException e) {
throw new RuntimeException(e);
}
}

1个回答

dcxy0
dcxy0   Ds   Rxr 2016.04.08 20:13
 $.ajax({
url:"/goods/UserServlet",
data:{method:"ajaxValidateEmail",email:value},
type:"POST",
dataType:"text",//这样改一下
async:false,
cache:false,
success:function(result){
//打印一下result试试看是什么结果
console.log(result);//chrome 按f12,看Console选项卡,可以看到结果.
if(!result){
$("#emailError").text("该邮箱已经被注册了");
$("#emailError").css("display", "");
bool = false;
}
}
});
cp19922011
cp19922011 谢谢了,按照你说的这个,自己找到了错误的地方了,还是自己懒,不愿意一处处的打印输出信息找错误的地方。错误产生得原因是在两个地方,一个是js中,属性的值传参数传错了,另一个就是复制粘贴导致的,因为检验用户名和邮箱的方式差不多一样,导致service层的方法调用dao层的方法有问题。
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片