1

falsch zurückgegeben werden Ich habe dieses Related entry und ein paar andere gefunden, aber ich habe meine Antwort nicht ganz gefunden, also poste ich neu. Ich versuche, eine Datenbankabfrage von Javascript zu starten, was ich von Ajax verstehe. Ich muss false zurückgeben, wenn die E-Mail bereits in der Datenbank ist, und true zurückgeben, wenn dies nicht der Fall ist, aber ich kann nicht herausfinden, was ich falsch mache. Ich habe meinen ersten Versuch gepostet, bevor ich angefangen habe, herumzuspielen und es unordentlich zu machen.Probleme, die nach der Verwendung von XMLHttpRequest

javascript: Es scheint wahr, egal was.

Die innerHTML Sachen funktioniert gut, weshalb ich auch verwirrt bin.

php: funktioniert gut, soweit ich das beurteilen kann.

<?php 
$email = $_GET['email']; 
$cemail = $_GET['cemail']; 
$emailvalidstring = "/^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}$/i"; 
include('connection.php'); 

$checkemailquery = "SELECT email FROM users WHERE email='".$email."'"; 
$checkemailresult = mysql_query($checkemailquery); 

// if query failed. 
if(!$checkemailresult) 
{ 
    $error = mysql_error(); 
    print $error; 
    exit; 
} 
//if the query did run, the email exists. Print error and exit. 
if(mysql_affected_rows() != 0) 
{ 
    echo "r0"; 
    return false; 
} 
else{ 
    if(preg_match($emailvalidstring, $email) && $email == $cemail) 
    { 
     echo "r1"; 
     return true; 
    } 
    else if(!preg_match($emailvalidstring, $email) && $email == $cemail) 
    { 
      echo "r2"; 
      return false; 
    } 
    else if(preg_match($emailvalidstring, $email) && $email != $cemail) 
    { 
     echo "r3"; 
     return false; 
    } 
    else if(!preg_match($emailvalidstring, $email) && $email != $cemail) 
    { 
     echo "r4"; 
     return false; 
    } 
} 
?> 

html: Ich habe es eine doppelte Kontrolle tun, sobald den Benutzer zu warnen, wenn es bereits genommen wird, und dann eine zweite Prüfung auf dem Server sicherzustellen, dass es immer noch wahr ist. Cemail ist die Bestätigungsmail.

<form id="newaccount" name="newaccount" method="post" action="phpfiles/accountcode.php" onSubmit="return emailvalid()" > 
<input type="text" id="email" onBlur="emailvalid()"/> 
<input type="text" id="cemail" onBlur="emailvalid()" /> 
<input type="submit" value="New"/> 
</form> 

Vielen Dank für Ihre Hilfe. Ich hoffe, ich habe es gut genug dargelegt. Ich bin offen für alle Ideen, da ich ziemlich neu bin.

Antwort

2

Sie geben false in der anonymen Callback-Funktion nicht in der emailValid-Funktion zurück. Deklarieren Sie einfach eine globale boolesche Variable und ändern Sie sie entsprechend in der anonymen Callback-Funktion.

+0

Das hat perfekt funktioniert danke. – Siriss

1

Nicht alle Codepfade innerhalb Ihrer JavaScript-Funktion emailvalid geben einen Wert zurück. Zum Beispiel, nachdem Sie xmlhttp.send(null); aufgerufen haben, geben Sie nichts zurück.

Die meisten Ihrer return Aussagen kehren tatsächlich aus der anonymen Funktion onreadystatechange, zugewiesen nicht aus der emailvalid Funktion, die ich vermute, ich ist nicht das, was Sie wollen.

+0

Danke, dass du das herausgebracht hast und für deine Hilfe. – Siriss

0

nicht auf die Frage bezogen werden: I nicht erreichbar Code hier getupft

if(email != '' && confirmemail != '') 
{ 
    if(email == '') 
    { 
     document.getElementById('email').style.backgroundColor ='red'; 
     document.getElementById('tdemail').style.color = 'red'; 
     document.getElementById('tdemail').innerHTML = 'You must enter a valid email address.'; 
     document.getElementById('tdcemail').innerHTML = ''; 
     document.getElementById('cemail').value = ''; 
     return false; 
    } 

den Code in der 2. „if“ nie da E-Mail ausgeführt werden = ‚‘ nach dem 1. „if“!.