steve_yanrun
Ray-Yan
采纳率65.9%
2016-08-10 09:47 阅读 8.0k
已采纳

Ajax中不执行Success方法的问题

如下代码:

 $.ajax({
            url:"servlet/StudentRegisterServlet",
            type:"POST",
            data:{"account":account.val(),"true_name":true_name.val(),"password":password.val(),
                "college":college.val(),"classname":classname.val(),"question":question.val(),
                "answer":answer.val()},
            dataType:"json",
            success:function(msg){
                alert(msg);
                if(msg === "register"){
                    window.location.href = "login.jsp";                     
                }else{
                    $("#msg3").html("此学号已经注册过,请刷新页面重试!");
                    return false;
                }
            },
            error:function(er){
                alert(er.message);
            }
        });

运行后执行error,不知道是不是msg参数的原因,但是后台的Servlet可以正常执行,就是前台页面效果因为这个原因不能显示,请大家帮忙看下什么原因?或者有哪些潜在的原因?谢谢!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

9条回答 默认 最新

  • 已采纳
    showbo GoCityPass新加坡曼谷通票 2016-08-10 11:53

    dataType:"json"
    ==>
    dataType:"text"

    指定为json需要返回标准json字符串,否则会报错,看你success回调参数值不是json,需要改为text类型

    点赞 3 评论 复制链接分享
  • doudou15223155621 doudou 2016-08-10 10:10

    你js里写的dataType:"json", 但是后台响应的数据result的内容格式不是json格式的。
    // 响应内容参照如下
    response.setContentType("application/json;charset=utf-8");
    response.getWriter().write("{success:true,msg:'xxxx'}");//响应json格式的数据
    response.getWriter().flush();
    response.getWriter().close();

    点赞 2 评论 复制链接分享
  • tian3786 tian3786 2016-08-10 10:18

    JSON解析的时候字符串需要用双引号,单引号会引起解析出错。你可以按F12打开浏览器的开发者工具看看控制台是否有错误。
    改成return "{""flag"":" + flag.ToString() + "}";试试

    点赞 2 评论 复制链接分享
  • kun_tostudy kun_hello 2016-08-10 09:53

    ajax 一直调用error 说明调用后台没有返回过200,说明代码错误主要原因是在后台 所以把后台代码发出来看下是哪里错了

    点赞 1 评论 复制链接分享
  • tian3786 tian3786 2016-08-10 10:19

    $.ajax({
    type: 'post',
    url: './data/Handler1.ashx',
    data: 'username=' + $('#username').val(),
    dataType: 'json',
    success: function (data) {
    window.alert(data[0].meg);
    $('#myres').val(data[0].meg);
    },
    error: function (x1,x2,x3)
    {
    alert(x1);

    }

    });

    点赞 1 评论 复制链接分享
  • Lemostic lemostic 2016-08-10 10:39

    试一下window.eval(data);

    点赞 1 评论 复制链接分享
  • yez497822 yez497822 2016-08-10 11:22

    先检查一下http的响应状态吧,这个不好说的..

    点赞 1 评论 复制链接分享
  • little_newBee little_newBee 2016-08-10 14:40

    可以将dataType写成text,然后接收到数据后,使用alert打印出来看看是不是标准的json格式

    点赞 1 评论 复制链接分享
  • steve_yanrun Ray-Yan 2016-08-10 09:57

    后台Servlet代码:

     public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            String account = request.getParameter("account");
            String true_name = request.getParameter("true_name");
            String password = request.getParameter("password");
            String college = request.getParameter("college");
            String class_name = request.getParameter("classname");
            String question = request.getParameter("question");
            String answer = request.getParameter("answer");
            Student stu = new Student();
            stu.setAccount(account);
            stu.setTrue_name(true_name);
            stu.setPassword(password);
            stu.setCollege(college);
            stu.setClass_name(class_name);
            stu.setQuestion(question);
            stu.setAnswer(answer);
            try {
                String result = new RegisterDao().SelectStudentAccount(account);
                //System.out.println(result);
                PrintWriter out = response.getWriter();
                out.println(result);
                if(result.equals("register")){
                    new RegisterDao().StudentRegister(stu);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    

    执行后,后台不报错,也可以往数据库中插入数据,所以找不到错误原因,请大家帮忙看下!

    点赞 评论 复制链接分享

相关推荐