$.ajax({
url:"/user/register",//url地址
dataType:"json",//返回的数据类型
type:"post",//发起请求的方式,get/post
data:$("#registerForm").serialize(),
success:function (data) {
//我们后台会把请求的参数封装到ResultInfo,在通过它进行相应页面
alert(1);
if (data.flag) {
location.href="register_ok.html"
}else {
//注册失败
$("#registerForm_msg").html(data.msg);
}
},
error:function (data) {
alert(2);
}
});
今天再次使用ajax请求,可是不管怎样回调函数一直都执行不了。查了好长时间,总结出来这几条原因。
1.添加async: false,(默认是true);
如上:false为同步,这个Ajax请求将整个浏览器锁死,
只有url请求中后台的方法执行结束后,才可以执行其它操作。
2.返回数据的类型错误,可能写的是json类型,而返回的数据不是json类型。
可以如上加一个error:function函数在验证。
3.
$(function () {
//给表单添加submit方法,让其组织同步请求,使用ajax异步请求
//获取表单对象并调用submit()方法,在其调用function函数
$("#registerForm").submit(function () {
//如果function函数的返回值是一个true或者是一个空,那么会提交表单,如果是false不会提交表单
//return checkusername();
//如果表单全部通过则使用ajax一步请求
if (checkusername()&&checkpassword()&&checkemail()&&checkname()&&checktelephone()){
$.post("/user/register",$("#registerForm").serialize(),function (data) {
alert(1);
if (data.flag) {
location.href="register_ok.html"
}else {
//注册失败
$("#registerForm_msg").html(data.msg);
}
},"json");
//serialize将请求的参数序列化成字符串"key1:value1,key2:value2,....."
}
return false;
});
第三条就是如上,使用submit加post或者ajax请求的时候,submit会反复提交,导致回调函数无法执行,需要在后面加一个return false;来防止多次提交。