2015-09-28 44 views
0

我在這裏有一個簡單的代碼,它使用json_encode並在PHP中回顯響應。這裏是我的代碼:AngularJS和PHP的json_encode

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}

我在這裏錯過了什麼嗎?謝謝。

+0

'的console.log(響應)'和你的答案可能會變得清晰。 –

+0

@KevinB我得到真或假,它工作正常,但我不能使if語句工作 – FewFlyBy

+0

我希望'response'具有'data'屬性。 –

回答

2

您需要在if語句中使用布爾值,而不是字符串,因爲true != "true"。改變你的if語句如下:

if(response.success === true) { 
+0

你走了。我這樣做了,但是我使用了「真正的」,這使得它不能正常工作。謝謝。 – FewFlyBy