问题:
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不同步造成的....可是 我还是没能得到我想要的结果 求助....现在是半夜了 好困
回答1:
没仔细看,尼玛太长了看着累,我觉得你应该在回调里面处理你接下来的第二步, 第三步
回答2:
是会有这个问题,2种办法
1.是先把ajax的结果存在一个控件,然后后面处理判断的时候,根据控件值判断。
2.把process部分一起放在ajax的success函数里面处理。不要单独出来。
回答3:
我没记错的话 Ajax是可以设置同步的 async: false
回答4:
代码太长了。
回答5:
你的CheckEmail函数的返回值永远是没有的,
因为你CheckEmail这个函数中的$.ajax中的sucess中的
return true(或return false)是返给sucess函数的不是返给CheckEmail的
回答6:
我之前用 async: false这个貌似没有作用。碰到这种全部是异步的头疼。但是按照你的流程,把相应 的方法写在前一个方法的回调里面 应该是没有问题的啊。实在不行 就把这些异步需要判断的东西直接放到服务器判断吧。
还有就是 我每次做函数返回值的时候return 一个值的时候都有问题。唉 能力有限。
回答7:
在最外层去返回returnCheckMail,在success中的去设置returnCheckMail的true、false值。
这样试试呢。
回答8:
在AJAX里面直接return 本来就不科学 里面的匿名方法 对吧return 屏蔽 除非你改写JQ 将该位置 function 方法返回的值return 这个方案不建议 建议你在ajax前面定义一个变量 然后 Ajax 执行的时候赋值 Ajax 执行完判断该值 return 就行了 async: false 是有效的可以明确告诉你 是你返回的方式错误罢了
回答9:
谁在调用bb()这个都没有的话怎么来第一步啊
回答10:
ajax 请求回的结果 无法长存 必须丢到页面的某个位置
建议使用隐藏域 确实没发现你哪里调用了bb 楼主的命名 很给力 我很欣赏你哟 哦 hoho
回答11:
在你调用ajax的函数里,外面定义返回的结果变量,然后在ajax中将结果赋给这个变量,在函数的末尾返回变量即可,看你直接的ajax中返回是错的,这样返回的是ajax的结果,而不是你函数要返回的结果