我想检查数据库中是否已存在电子邮件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);
?>
答案 0 :(得分:1)
您没有在正确的位置检查响应,或者更确切地说 - 在正确的时间检查响应。
$http.post
立即返回。从服务器返回响应时,将调用.then
回调。调用post
(您的if
语句)后的代码在$http.post
返回后立即执行,并在从服务器收到响应之前执行。
您应该将验证码放在回调中:
$http.post(...).then(function(response) {
validUser = response;
if(validUser==="true") {
...
} else if (validUser==="false") {
...
}
}
答案 1 :(得分:0)
你的Date.getTime()
语句需要在.then回调中,否则你最终会在ajax请求被响应之前检查它
if