在做一个注册登录的一个项目时候遇到一个问题
花了一天的时间,反复检查ajax代码和后台的servlet的代码始终都还没发现问题,网络正常,返回状态值200
先看看我的ajax的代码
$("#btnReg").click(function () {
if (checkAll()) {
var param = $("#registerForm").serialize();
$.post({
url:"user",
data:param,
success:function (data) {
if (data == "success"){
location.href = "register_ok.html";
}else{
$("#msg").html(data);
}
},
error:function () {
alert("服务器错误");
}
});
}
});
再来看看后台的servlet代码
@Override
public void register(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
response.setContentType("text/json;charset=utf-8");
PrintWriter out = response.getWriter();
//获取验证码
String check = request.getParameter("check");
HttpSession session = request.getSession();
String vcode = (String) session.getAttribute("vcode");
if (!check.equalsIgnoreCase(vcode)) {
out.print("验证码不正确");
}else{
try {
//将用户发过来的表单封装成bean
User user = new User();
BeanUtils.populate(user , request.getParameterMap());
if (userService.isUserExists(user.getUsername())){
out.print("用户已存在");
}else{
//往数据库添加用户记录操作
int row = userService.addUser(user);
if (row > 0) {
//注册成功
out.print("success");
//System.out.println("注册成功");
}
}
} catch (Exception e) {
throw new RuntimeException(e.getMessage());
}
}
}
看似上面的代码好像没有什么问题
最终还是发现了错误,而且还是比较低级的错误
没错看看这一行代码
response.setContentType("text/json;charset=utf-8");
这里我居然是写了json
发现了这个错误之后我才发现只要是后台返回的数据类型不一样也会落入error中,这里我就改成html或plain就一切ojbk了
修改后
response.setContentType("text/html;charset=utf-8");
或者
response.setContentType("text/plain;charset=utf-8");