//再次验证手机号码 格式是否正确
var reg = /^1[3|5|4|8|7|][0-9]\d{8}$/;
var r = phone.match(reg);
if (r == null) {
layer.open({
content: '手机号码格式不正确'
,skin: 'msg'
,time: 3 //2秒后自动关闭
});
return false; //第一个return false是有效的
}
//再次验证手机号码是否已经存在
$.post("__MODULE__/Login/ajaxCheckPhoneIsExist",{phone:phone},function(data,status){
if(data=="手机号码已被注册"){
layer.open({
content: '该手机号码已经存在'
,skin: 'msg'
,time: 3 //2秒后自动关闭
});
return false; //第2个return false无效
}
});
alert("11111");
//Le premier retour faux est valide
//Le deuxième retour faux est invalide
Quelle est la raison
Le premier
La méthodereturn false
de la question est appelé de manière synchrone, donc l'effet peut être vu ;$.post
est exécutée de manière asynchrone, donc lorsque$.post
方法是异步执行的,因此在$.post
方法的回调函数里面return false
的时候,其实是生效了的,但是在执行这句代码的时候,$.post
外面的代码早就执行完成了,所以看不到效果而已。另外,在回调函数里面加这句代码并没有什么意义,因为即使是return
,也是退出当前执行的函数,即$.post
的回调函数,并不能阻止$.post
est à l'intérieur de la fonction de rappel de la méthode$.post
, elle prend réellement effet, mais lors de l'exécution de ce code Quand , le code en dehors de$.post
a déjà été exécuté, donc l'effet n'est pas visible. De plus, ajouter ce code à la fonction de rappel n'a pas de sens, car mêmereturn
quitte la fonction en cours d'exécution, c'est-à-dire la fonction de rappel de$.post
, et L'exécution de code en dehors de$.post
ne peut pas être empêchée.S'il y a du code qui doit être placé
$.post
请求成功之后执行的,那就把代码放到$.post
方法的回调函数里面去吧。例如题主如果本意想让alert('1111')
在请求成功后通过条件判断执行,那可以alert('11111')
dans la fonction de rappel de la méthode $.post ;Permettez-moi d'expliquer ici le synchrone et l'asynchrone par rapport au sujet. Par exemple, le sujet écrit du code et a soif, alors il va faire bouillir de l'eau pour la boire. Dans ce processus, le sujet équivaut à un fil. L'écriture de code est ce que le sujet est en train d'exécuter. Lorsqu'il a soif, il va chercher de l'eau et la fera bouillir. Ne vous inquiétez pas, le sujet continuera. pour écrire du code. Il lui suffit d'attendre que l'eau soit cuite, il suffit de la sortir et de la boire soi-même. Le code du sujet est le même. js est exécuté de haut en bas. Lorsque l'exécution atteint
$.post
就发送一个请求,请求的过程中外部的js还是继续执行(并没有等待$.post
请求返回结果),等到ajax请求返回了,再回调之前定义的回调函数。这里除了$.post
, il est exécuté de manière asynchrone et le reste du code est exécuté de manière synchrone.De plus, j'ai trouvé que l'expression régulière de la question peut être optimisée. Je pense personnellement qu'elle peut s'écrire sous la forme
./^1[34578]d{9}$/g
Return renvoie la fonction actuelle. Votre premier retour est la fonction de rappel d'un événement de clic, et le deuxième retour est la fonction de rappel de la requête ajax. Naturellement, cela n'empêchera pas le rappel de la fonction externe
.La fonction dans post est une fonction asynchrone et ne sera appelée qu'une fois la requête réussie. Avant que la requête ne revienne avec succès, le code continuera à être exécuté. La déclaration return false n'est donc pas valide. La solution est de mettre return false en dehors de la fonction asynchrone, pas dans la fonction asynchrone de $.post().
$.post
是异步执行的,需要使用$.ajax
并设置async: false
。Placez-le au même niveau que alert(1111)