У меня есть простой код здесь, который использует json_encode и выдает ответ в PHP. Вот мой код:
app.js
$scope.login = function() {
var data = {
username: $scope.login.username,
password: $scope.login.password
};
$http.post('endpoints/login.php', data)
.success(function(response) {
if(response.success == "true") {
alert('nice');
} else {
alert('not nice');
}
})
.error(function(response) {
console.log(response);
});
};
login.php
$data = json_decode(file_get_contents("php://input"));
$stmt = $db->prepare('SELECT * FROM accounts WHERE username=? AND password=?');
$stmt->execute(array($data->username, $data->password));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if($row > 0)
{
$response = [
"success" => true
];
echo json_encode($response);
}
else
{
$response = [
"success" => false
];
echo json_encode($response);
}
Он работает отлично, но эта часть не работает:
if(response.success == "true") {
alert('nice');
} else {
alert('not nice');
}
Когда я добавляю console.log(response)
я получаю Object {success: true} or Object {success: false}
.
Я что-то упустил? Спасибо.
Вам нужно использовать логическое выражение в инструкции if, а не строку, потому что true != "true"
. Измените оператор if следующим образом:
if(response.success === true) {
console.log(response)
и ваш ответ может стать ясным.