概述
前端获取后台数据失败解决方法
在写完登录页面测试的时候,发现前端已经获取了表单内容,但后台总是无法传回正确的数据,焦灼了3天,最后终于在别人的帮忙找到了问题,代码如下:
js代码:
// An highlighted block
layui.use(['form','jquery','layer'],function(){
var form
= layui.form,
$ = layui.$,
layer = layui.layer;
form.on('submit(submitBtn)',function(obj){
$.ajax({
url:getContextPath()+'/MemberServlet/login',
type:'POST',
data:$(".layui-form").serialize(), // 取得表单的所有数据内容
success:function(data){
alert(data);
if(data =="success"){
layer.msg('用户登录成功',{time:2000,icon:1,end:function(){
location.href=getContextPath()+"/pages/back/index.jsp";
}})
}else{
layer.msg('用户登录失败',{time:2000,icon:2})
}
}
});
});
})
servlet代码:
public class MemberServlet extends DispatcherServlet {
public void login() {
// 接收表单参数
String mid = super.request.getParameter("mid");
String password = super.request.getParameter("password");
// 数据验证
if (ValidateUtils.validateEmpty(mid) && ValidateUtils.validateEmpty(password)) {
//判断true
// 将数据保存在对象之中
Member vo = new Member();
vo.setMid(mid);
vo.setPassword(new MD5Code().getMD5ofStr("{[" + password + "]}")); // 加盐处理
System.out.println(vo.getPassword()+"***");
try {
Map<String, Object> map = ServiceFactory.getIMemberServiceInstance().login(vo);
Member member = (Member) map.get("member");
if (member.getMid() != null) {
super.request.getSession().setAttribute("member", map.get("member")); //保存对象数据
super.response.getWriter().print("success");
}else {
super.response.getWriter().print("error");
}
} catch (Exception e) {
e.printStackTrace();
}
} else {
try {
super.response.getWriter().print("error");
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
在艰苦奋斗3天后发现这两个文件都没有错,而是在定义接口实现类的数据库查询信息里面没有写password,导致后台只能比对mid而无法比对password
修改前:
public Member findLogin(Member vo) throws SQLException {
Member member = new Member();
String sql = "SELECT mid,name,phone,flag FROM member WHERE mid=? AND status=7";
super.pstmt = super.conn.prepareStatement(sql);
super.pstmt.setString(1,vo.getMid());
super.pstmt.setString(2,vo.getPassword());
ResultSet rs = super.pstmt.executeQuery();
if (rs.next()){
member.setMid(rs.getString(1));
member.setName(rs.getString(2));
member.setPhone(rs.getString(3));
member.setFlag(rs.getInt(4));
}
return member;
}
错误在第三行,应该加上password
修改后:
String sql = "SELECT mid,name,phone,flag FROM member WHERE mid=? AND password=? AND status=7";
这样就能完美运行了。
最后
以上就是舒适吐司为你收集整理的前端无法获取在servlet后台传回的数据前端获取后台数据失败解决方法的全部内容,希望文章能够帮你解决前端无法获取在servlet后台传回的数据前端获取后台数据失败解决方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复