为何我的ajax登录验证总是进不去success,网上未寻得解决办法

迟到_啦 2018-05-27 05:49:27
不知道什么原因,我的jquery引入之后却不能使用,我用$(document).ready(function(){
alert("测试");
})测试之后可以正确弹出警告框,然而jquery就是不能用,考虑到可能是版本问题,换了几个版本还是不行,最后没办法,就全部用原声js写的


现在的问题是:我在后台打印输出测试请求是否进入后台,结果是每一种情况都可以完美打印到控制台,但是返回给页面时却始终进不去success的回调函数,我加了一下error函数后,发现每次都进入该函数,都会弹出该函数相关提示信息(“进入了错误的方法”)

ajax验证代码如下:
/*Ajax用户登录验证*/
function toValidate(){
var username = document.getElementById("username").value;
var password = document.getElementById("password").value;
var data = "username="+username +"&password="+password
if(username == "" || password == ""){
window.alert("用户名密码不能为空!");
return false;
}else{
$.ajax({
type:"post",
async:true,
url:"toUserLogin.action",
data:data,
dataType:"text",
success:function(data){
if(data == "用户名可用!"){
window.location.href = "jsp/index.jsp";
}else{
return false;
}
},
error:function(data){
alert("进入了错误的方法");
},
});
}
};


后台处理的代码
@RequestMapping(value = "/toUserLogin.action",method=RequestMethod.POST)
@ResponseBody
public String toUserLogin(@RequestParam("username") String username,@RequestParam("password") String password
,HttpServletResponse response,HttpSession session) throws IOException{
String message = "用户名可用";
List<TnUser> usersByName = userService.selectUserByName(username);
TnUser userByNameAndPass = userService.selectUserByNameAndPasswd(username, password);
PrintWriter out = response.getWriter();
if(usersByName == null || usersByName.isEmpty()){
System.out.println("输入用户不存在");
message = "用户名不存在";
response.setContentType("text/plain;charset=UTF-8");
out.write(message);
}
else if(userByNameAndPass != null && usersByName != null){
System.out.println("验证成功-当前用户:"+userByNameAndPass);
session.setAttribute("user", userByNameAndPass);
response.setContentType("text/plain;charset=UTF-8");
out.write(message);
}
else{
System.out.println("验证失败-密码错误");
message = "密码错误";
response.setContentType("text/plain;charset=UTF-8");
out.write(message);
}
out.close();
return null;

}


浏览器效果


chrome浏览器的控制台提示信息


我在网上也看了很多相关解释,但大体都是说返回类型的问题,我也就返回一个字符串,text接受应该没问题呀,怎么会进不去success呢 ?

对了,哪位前辈如果知道我的jquery问题如何解决,也非常欢迎留言给我一些建议,万分感谢
...全文
1500 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wcwtitxu 2018-06-06
  • 打赏
  • 举报
回复

navigated to ...
你是不是 toUserLogin.action 被什么过滤器拦截器之类的 截走了。
跳转到login.jsp 去了。

你还是
打开 f12 -> network , 发请求后,在network面板查看 toUserLogin.action 的 response 是什么情况
迟到_啦 2018-06-06
  • 打赏
  • 举报
回复
目前在完善毕设,此功能暂时通过普通 的action跳转实现,controller中返回页面,返回页面的session中存放相关提示信息,在前台提示后后立即用jstl标签remove掉该信息来实现,因为还有几天就要答辩,所以该功能暂且不深究,先以实现为主,待答辩结束后,我会再测试前辈们给的建议,把这个问题真正的解决掉,感谢各位的帮助,有了测试结果我会及时回复哒
小猫阿尤 2018-06-05
  • 打赏
  • 举报
回复
建议断点跟踪一下 后台代码加断点 前天js加 debug 或者浏览器的F12调试功能 一步步跟踪看看怎么执行的
hookee 2018-06-05
  • 打赏
  • 举报
回复
在浏览器控制台 跟踪下网络, 看看XHR返回的是什么, 直接进error的话可能后台程序有错,返回的状态码不是200
htcyrylcmj0415 2018-06-05
  • 打赏
  • 举报
回复
/*Ajax用户登录验证*/
        function toValidate(){
            var username = document.getElementById("username").value;
            var password = document.getElementById("password").value;
            var data =  "username="+username +"&password="+password
            if(username == "" || password == ""){
                window.alert("用户名密码不能为空!");
                return false;
            }else{
                $.ajax({
                    type:"post",
                    async:true,
                    url:"toUserLogin.action",
                    data:data,
                    dataType:"text",
                    success:function(data){
                        if(data == "用户名可用!"){
                            window.location.href = "jsp/index.jsp";
                        }else{
                            return false;
                        }
                    },
                    error:function(data){
                        alert("进入了错误的方法");   
                    },//你这里逗号去掉试试,不过不行我就不知道了
                });
            }
        };
迟到_啦 2018-06-05
  • 打赏
  • 举报
回复
引用 3 楼 licip的回复:
@RequestMapping(value = "/toUserLogin.action",method=RequestMethod.POST,produces="text/plain;charset=utf-8") @ResponseBody public String toUserLogin(@RequestParam("username") String username,@RequestParam("password") String password ,HttpServletResponse response,HttpSession session) throws IOException{ String message = "用户名可用"; List<TnUser> usersByName = userService.selectUserByName(username); TnUser userByNameAndPass = userService.selectUserByNameAndPasswd(username, password); PrintWriter out = response.getWriter(); if(usersByName == null || usersByName.isEmpty()){ System.out.println("输入用户不存在"); message = "用户名不存在"; } else if(userByNameAndPass != null && usersByName != null){ System.out.println("验证成功-当前用户:"+userByNameAndPass); session.setAttribute("user", userByNameAndPass); } else{ System.out.println("验证失败-密码错误"); message = "密码错误"; } return message; }
后台缺少out.writer()了吧,难道返回message在前台function中就可以拿到返回的数据data(即message)么?
licip 2018-06-04
  • 打赏
  • 举报
回复
@RequestMapping(value = "/toUserLogin.action",method=RequestMethod.POST,produces="text/plain;charset=utf-8") @ResponseBody public String toUserLogin(@RequestParam("username") String username,@RequestParam("password") String password ,HttpServletResponse response,HttpSession session) throws IOException{ String message = "用户名可用"; List<TnUser> usersByName = userService.selectUserByName(username); TnUser userByNameAndPass = userService.selectUserByNameAndPasswd(username, password); PrintWriter out = response.getWriter(); if(usersByName == null || usersByName.isEmpty()){ System.out.println("输入用户不存在"); message = "用户名不存在"; } else if(userByNameAndPass != null && usersByName != null){ System.out.println("验证成功-当前用户:"+userByNameAndPass); session.setAttribute("user", userByNameAndPass); } else{ System.out.println("验证失败-密码错误"); message = "密码错误"; } return message; }
孟子E章 2018-05-29
  • 打赏
  • 举报
回复
要学会调试方法 1,先检查页面是否有脚本错误,这个浏览器的F12打开控制台就可以看到是否存在脚本错误 2、检查是否进入到了后台代码,也就是服务器端打印的信息是否看到了 3、修改 error:function(data){ alert(data); }, 看提示什么错误。 另外你这判断 if(data == "用户名可用!") 后台返回的根本没有 用户名可用! 这个字符串,建议采用json格式返回,或者返回简单的数字
wqq5610 2018-05-29
  • 打赏
  • 举报
回复
return 个null,什么鬼??为何不return message

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧