我写了一个脚本注册用户。在最后一步中,我需要从函数中获取值true或false,以查找电子邮件是否已存在。
function do_register(user_email){
if (!isemailexist(user_email)) {
document.getElementById("error").innerHTML="email is already exist, please change!!";
document.regForm.user_email.focus()
return false;
}
if (user_email=="") {
document.getElementById("error").innerHTML="email is emphy!!";
document.regForm.user_email.focus()
return false;
}
if(document.regForm.user_name.value!=""){ process_register();} }
function isemailexist ()
xmlHttp.onreadystatechange=function () {
if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){
var str=xmlHttp.responseText;
var res=JSON.parse(str);
if (res[0]=="no"){
return false;
}
}
haha=xmlHttp.onreadystatechange.test(res[0]); ///I used test(); methode in order to find value true or false
}
我已经尝试了很多,但没有一个可以给我真实或者fals!
我已经更新了上面的脚本,我希望它更好。还有一些代码:
PHP代码
if(mysql_num_rows($result)>0){ // email is already exist
$phpArray = array("no","Erroremail is aleady exist");
echo json_encode($phpArray);
}
答案 0 :(得分:0)
你做得太复杂了。当响应完全错误时,不需要创建数组,因为您已经告诉用户该电子邮件已经存在。
而不是做
if(mysql_num_rows($result)>0){ // email is already exist
$phpArray = array("no","Erroremail is aleady exist");
echo json_encode($phpArray);
}
只需在服务器端执行此操作。
if(mysql_num_rows($result)>0){ // email is already exist
return false;
}
当您不再使用数组时,您的响应会发生变化,您需要稍微调整一下代码。从[0]
移除res[0]
。
然后您的服务器响应将为false,因此请更改
if (res[0]=="no"){
return false;
}
到
if (res==false){
return false;
}
else{
//continue...
}