如下代码:
$.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格式