$.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;来防止多次提交。