-1

我写了一个脚本注册用户。在最后一步中,我需要一个函数的值 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

    }

我已经尝试了很多,但没有一个能给我真假!

我已经更新了上面的脚本,希望它更好。更多代码:

PHP代码

if(mysql_num_rows($result)>0){ //  email is already exist
     $phpArray = array("no","Erroremail is aleady exist");
     echo json_encode($phpArray);
 }
4

1 回答 1

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]


那么你的服务器响应将是错误的,所以改变

if (res[0]=="no"){  
    return false;
}

if (res==false){  
    return false;
}
else{
//continue...
}
于 2013-08-08T22:34:00.767 回答