function bb() { var bool = CheckEmail(); return bool;///第二部 } function CheckEmail() { var ReturnCheckEmail = false;//////第一步 var IsEmail = StringHelper.isEmail($("#TextBox1").val()); if (StringHelper.isEmail($("#TextBox1").val()) != true) { $("span").remove(".email"); $(".email").val(' '); $("#TextBox1").parent().append("*请输入正确的邮箱!"); ReturnCheckEmail = false; } else { $.post("Ajax/CheckInfo.ashx", { "CheckType": "MemberEmail", "CheckValue": $("#TextBox1").val() }, function (IsExits) { Process(IsExits); } ); } return ReturnCheckEmail; } function Process(IsExits) {///第三部 if (IsExits == "True") { $("span").remove(".email"); $(".email").val(' '); $("#TextBox1").parent().append("*OK"); alert('aa'); return true; } else { $("span").remove(".email"); $(".email").val(' '); $("#TextBox1").parent().append("*不存在这个邮箱"); alert("cc"); return false; } }
我很来是想 第一步 第三步 第二步这样的顺序走下去的
可是 我调试的时候老是第一步 第二步 第三步 这样的顺序出来的结果
网上说是JQuery不同步造成的....可是 我还是没能得到我想要的结果 求助....现在是半夜了 好困
- Carriage Return (ASCII chr 13) is missing from tex
- How to fix IE ClearType + jQuery opacity problem i
- jQuery add and remove delay
- How to store image outside of the website's ro
- Include empty value fields in jQuery .serialize()
我之前用 async: false这个貌似没有作用。碰到这种全部是异步的头疼。但是按照你的流程,把相应 的方法写在前一个方法的回调里面 应该是没有问题的啊。实在不行 就把这些异步需要判断的东西直接放到服务器判断吧。
还有就是 我每次做函数返回值的时候return 一个值的时候都有问题。唉 能力有限。
你的CheckEmail函数的返回值永远是没有的,
因为你CheckEmail这个函数中的$.ajax中的sucess中的
return true(或return false)是返给sucess函数的不是返给CheckEmail的
在最外层去返回returnCheckMail,在success中的去设置returnCheckMail的true、false值。
这样试试呢。
在你调用ajax的函数里,外面定义返回的结果变量,然后在ajax中将结果赋给这个变量,在函数的末尾返回变量即可,看你直接的ajax中返回是错的,这样返回的是ajax的结果,而不是你函数要返回的结果
没仔细看,尼玛太长了看着累,我觉得你应该在回调里面处理你接下来的第二步, 第三步
在AJAX里面直接return 本来就不科学 里面的匿名方法 对吧return 屏蔽 除非你改写JQ 将该位置 function 方法返回的值return 这个方案不建议 建议你在ajax前面定义一个变量 然后 Ajax 执行的时候赋值 Ajax 执行完判断该值 return 就行了 async: false 是有效的可以明确告诉你 是你返回的方式错误罢了