js中return false失效是怎么回事?
今天在写一个功能,是需要用到ajax,所以我就很爽快的从本站找了一下GET方式的ajax,速度很快,通过函数,获取到了返回的值。
大致的代码是这样的:
function postcheck(){
var user_name= document.getElementById('username');
var user_tel= document.getElementById('usertel');
var yzm = document.getElementById("yzm");
S_xmlhttprequest(); //------------------引用上面的方法
xmlHttp.open("GET","./yzm.php?tel="+user_tel.value+ "&yzm="+ yzm.value,false);
xmlHttp.onreadystatechange = byphp; //------------------引用byphp方法
xmlHttp.send(null);
}
function byphp(){ //------------------php运行的结果返回在这里
var eitail = xmlHttp.responseText;
return false;//**ABC***
}
之后就是根据 byphp()这个方法中的eitail这个值是正确还是不正确,若不正确,就终止postcheck()方法。但是怎么写ABC都不成功,都不能禁止,那怎么办呢?怎么才能使这里的return false能够起作用呢?后来我改了下。使byphp()中的eitail变成全局变量,只需要将之前的var去掉即可。
修改的代码如下:
function byphp(){ //------------------php运行的结果返回在这里
eitail = xmlHttp.responseText;
}
function postcheck(){
var user_name= document.getElementById('username');
var user_tel= document.getElementById('usertel');
var yzm = document.getElementById("yzm");
S_xmlhttprequest(); //------------------引用上面的方法
xmlHttp.open("GET","./yzm.php?tel="+user_tel.value+ "&yzm="+ yzm.value,false);
xmlHttp.onreadystatechange = byphp; //------------------引用byphp方法
xmlHttp.send(null);
if(eitail != 1){
alert(eitail);
return false;
}
}
这样,只要将eitail设置成全局变量,在postcheck()的方法中进行这个全局变量的判断即可。
如果您看到了最后这一行,我要告诉你一句,请记住js中的全局变量这个词,以后用到的可是很多的。