2017-03-07 4 views
0

Ich kann den Grund finden, warum meine Ajax-Antwort anders, wenn ich die Antwort console.log. Irgendwelche Ideen? Seite1 wird in Konto Update-Formular verwendet, während page2 in Anmeldeformular verwendet wird.Wie kommt es, dass Ajax Antwort anders ist?

page1.js:

function ajaxCheckDupEmail(){ 
    if(valid_email === true){ 
     return $.ajax({ 
      type:'POST', 
      url:'ajax/page1.php', 
      data:{ 'email': email, 'email_login': email_login }, 
      success:function(response){ 
       //some code 
      } 
     }); 
    }else{ 
     //other code 
    } 
} 

$.when(ajaxCheckDupEmail()).done(function(a1){ 
    console.log(a1); 
    if(a1[0] === 'false'){ 
     //submitting form 
     //some code 
    } 
}); 

HINWEIS: E-Mail und email_login ist ein js var, wo ich speichern userinput in, ich VALID_EMAIL verwendet zu überprüfen, ob E-Mail

page1.php gültig ist:

if(isset($_POST["email"]) && !empty($_POST["email"])){ 
$email = trim_strip_data($_POST["email"]); 
$email_login = trim_strip_data($_POST["email_login"]); 

$prep_data_email = $db->prepare("SELECT email FROM user WHERE email = :email"); 
$prep_data_email->execute(array(":email" => $email)); 
$row_count = $prep_data_email->rowCount(); 
if($row_count === 1 && $email !== $email_login){ 
    echo "true"; 
}else{ 
    echo "false"; 
} 
} 

HINWEIS: trim_strip_data() ist eine benutzerdefinierte Funktion weiße Flächen zu trimmen, obwohl ich nicht glaube, es in diesem Fall

notwendig ist 01.235.

page2.js:

function ajaxCheckDupEmail(){ 
    if(valid_email === true){ 
     return $.ajax({ 
      type:'POST', 
      url:'ajax/page2.php', 
      data:{ 'email': email }, 
      success:function(response){ 
       // some code 
      } 
     }); 
    }else{ 
     //other code 
    } 
} 

function ajaxCheckDupUsername(){ 
    if(username !== ""){ 
     return $.ajax({ 
      type:'POST', 
      url:'ajax/page2.php', 
      data:{ 'username': username }, 
      success:function(response){ 
       // some code 
      } 
     }); 
    }else{ 
     //other code 
    } 
} 

$.when(ajaxCheckDupUsername(), ajaxCheckDupEmail()).done(function(a1, a2){ 
    console.log(a1); 
    console.log(a2); 
    if(a1[0] === 'false' && a2[0] === 'false'){ 
     //submitting form 
     //some code 
    } 
}); 

HINWEIS: E-Mail ist ein js var, wo ich speichern userinput in, ich VALID_EMAIL verwendet zu überprüfen, ob E-Mail

page2.php gültig ist:

if(isset($_POST["email"]) && !empty($_POST["email"])){ 
$email = trim_strip_data($_POST["email"]); 

$prep_data_email = $db->prepare("SELECT email FROM user WHERE email = :email"); 
$prep_data_email->execute(array(":email" => $email)); 
$row_count = $prep_data_email->rowCount(); 
if($row_count === 1){ 
    echo "true"; 
}else{ 
    echo "false"; 
} 
} 

if(isset($_POST["username"]) && !empty($_POST["username"])){ 
$username = trim_strip_data($_POST["username"]); 

$prep_data_username = $db->prepare("SELECT username FROM users WHERE username = :username"); 
$prep_data_username->execute(array(":username" => $username)); 
$row_count = $prep_data_username->rowCount(); 
if($row_count === 1){ 
    echo "true"; 
}else{ 
    echo "false"; 
} 
} 

HINWEIS: trim_strip_data() ist eine benutzerdefinierte Funktion weiße Flächen zu trimmen, obwohl ich nicht glaube, es in diesem Fall notwendig ist,

Das Problem ist, ich 2 unterschiedliche Antwort re sult (abhängig vom Ergebnis richtig/falsch).

In page1.js erhalte ich:

true 

In page2.js erhalte ich:

true,success,[object Object] 

true,success,[object Object] 

Es sieht aus wie ich ein Antwortobjekt in page2.js bekommen, aber warum ich nicht einen in page1.js bekommen?

Antwort

0

https://api.jquery.com/jquery.when/#jQuery-when-deferreds

Sie sind mit dem Versprechen zu tun, und ein Versprechen gibt immer ein Versprechen. Also ich würde Double Check page1 nicht ist auch das Objekt zurück.

z. Öffnen Sie die Dev-Tools und führen Sie Folgendes aus:

$.when().done(function(x) { alert('done')}); 

Sie sehen, es gibt ein Objekt zurück, das ist das Versprechen.

aber für

true,success,[object Object] 

Ich sehe nicht, wo success kommen, werden Sie einen Code fehlt?

On a side note ...

if(valid_email === true) 

ist die gleiche wie

if(valid_email) 

sorry, es nur mir so wurde abgehört.

+0

Ich alarmierte die beiden Antworten, aber ich bekomme die gleichen Ergebnisse wie in meiner Frage angegeben. Ich vermisse keinen Code. – Thoaren

Verwandte Themen