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可以正常执行,就是前台页面效果因为这个原因不能显示,请大家帮忙看下什么原因?或者有哪些潜在的原因?谢谢!

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

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

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

后台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();
        }
    }

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

你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();

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

$.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);

}

});

试一下window.eval(data);

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

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