2016-09-24 1 views
0

Ich möchte überprüfen, ob die E-Mail-ID bereits in der Datenbank vorhanden ist. Wenn die E-Mail-ID existiert, sollte sie false zurückgeben, andernfalls true. Ich kann die Antwort nicht erhalten. Ich habe den Controller-Code und den PHP-Code angehängt. [Die Variable ValidUser undefiniert]

Controller.js

signUpApp.controller("signUpCtrl",function($scope,$http){ 
     $scope.register = function(form,user){ 
      if (form.$valid) 
      { 
      $http.post("http://localhost/checkUser.php?email="+user.email) 
        .then(function(response){ 
         validUser=response; 
        }); 
      if(validUser=="true") 
      { 
       alert("valid user"); 
      } 
      else 
      { 
       alert("already exists"); 
      } 

      } 
     } 
    }); 

checkUser.php

<?php 
header("Access-Control-Allow-Origin: *"); 
header("Content-Type: application/json; charset=UTF-8"); 

$conn = new mysqli("localhost", "root", "", "user_details"); 
//$data = json_decode(file_get_contents("php://input")); 
//$email = mysql_real_escape_string($data->email); 
$email = $_POST['email']; 
$result = $conn->query("SELECT count(*) as count from user where email='$email'"); 

$outp = ""; 
$rs = $result->fetch_array(MYSQLI_ASSOC) 

    if ($rs['count']==0) 
    { 
     $outp ="true"; 
    } 
    else 
    { 
     $outp ="false"; 
    } 
$conn->close(); 

echo($outp); 
?> 

Antwort

1

Sie sind nicht die Antwort an der richtigen Stelle überprüft, oder besser gesagt - zur richtigen Zeit .

$http.post kehrt sofort zurück. Ihr .then Callback wird aufgerufen, wenn die Antwort vom Server zurückgegeben wird. Der Code nach dem Aufruf an post (Ihre if Anweisungen) wird ausgeführt, direkt nachdem zurückgibt und bevor die Antwort vom Server empfangen wird.

Sie sollten Ihren Validierungscode in Ihrem Rückruf platzieren:

$http.post(...).then(function(response) { 
    validUser = response; 
    if(validUser==="true") { 
     ... 
    } else if (validUser==="false") { 
     ... 
    } 
} 
+0

Ich habe die if und sonst Teil in der Rückruffunktion hinzugefügt. Trotzdem funktioniert es nicht. – Vimal

+0

Zeit zum Debuggen - vergewissern Sie sich, dass validUser das enthält, was Ihrer Meinung nach darin enthalten ist. – zmbq

+0

Es funktioniert jetzt.Ich habe Antwort anstelle von response.data.Thanks viel verwendet. – Vimal

0

Sie sind if Anweisung innerhalb der .then Rückruf sein muss, sonst werden Sie es Prüfung am Ende vor youre Ajax-Anforderung geantwortet wird

signUpApp.controller("signUpCtrl",function($scope,$http){ 
    $scope.register = function(form,user){ 
     if (form.$valid) 
     { 
     $http.post("http://localhost/checkUser.php?email="+user.email) 
       .then(function(response){ 
        validUser=response; 
        if(validUser=="true") 
        { 
        alert("valid user"); 
        } 
        else 
        { 
        alert("already exists"); 
        } 
       }); 
     } 
    } 
}); 
Verwandte Themen