为什么Jquery接收数据不能同步?

2020-07-13 10:49发布

问题:

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的结果,而不是你函数要返回的结果