我无法得到响应角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") {
...
}
}
答
你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");
}
});
}
}
});
我已经在回调函数中添加了if和else部分,但仍然无效。 – Vimal
调试时间 - 确保validUser包含您认为它包含的内容。 – zmbq
它现在正在工作。我用响应而不是response.data.Thanks很多。 – Vimal