我无法得到响应角js $ http.post

问题描述:

我想检查电子邮件ID是否已经存在数据库。如果电子邮件ID存在,它应该返回false,否则返回true。我无法获得答复。我附上了控制器代码和php代码。 [变量VALIDUSER未定义]

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); 
?> 

你不检查在正确的位置,或者说反应 - 在正确的时间。

$http.post立即返回。当从服务器返回响应时,将调用您的.then回调。 post(您的if语句)调用后的代码在$http.post返回之后以及从服务器收到响应之前执行。

你应该把你的验证代码回调中:

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

我已经在回调函数中添加了if和else部分,但仍然无效。 – Vimal

+0

调试时间 - 确保validUser包含您认为它包含的内容。 – zmbq

+0

它现在正在工作。我用响应而不是response.data.Thanks很多。 – Vimal

if语句需要是。然后回调里面,否则你会最终检查前,您选择Ajax请求得到回应

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"); 
        } 
       }); 
     } 
    } 
});