J'essaie d'obtenir les données de json à partir d'un fichier php à utiliser dans un contrôleur angulaire. Je json_encode(pg_fetch_assoc($result));
écho à json_encode(pg_fetch_assoc($result));
Dans le fichier php et quand je console.log($scope.contents);
Dans le contrôleur angulaire, il ramène les données json, mais il revient vide lorsque j'essaie de faire une ng-repeat
Controllers.js :
myApp.controller('ContentCtrl', function ($scope, $http) { $http({method: 'GET', url: 'content.php'}).success(function(data) { $scope.contents = data; }); });
Content.php :
<?php require_once("sdb.php"); $result = pg_query($dbconn, "SELECT * FROM content ORDER BY name ASC"); echo json_encode(pg_fetch_assoc($result));
Index.php :
<!DOCTYPE html> <html lang="en"> <head> <link rel="stylesheet" href="css/style.css"/> </head> <body ng-app="myApp"> <div ng-controller="ContentCtrl"> <ul> <li ng-repeat="content in contents"> <a href="#">{{content.name}}</a> </li> </ul> </div> </body> <script src="js/jquery-1.10.2.js"></script> <script src="js/angular.min.js"></script> <script src="js/controllers.js"></script> </html>
Vous devrez envoyer les données en tant que JSON. Pour ce faire, il vous suffit d'ajouter l'en- header('Content-Type: application/json');
Avant votre déclaration d' echo
. Alors content.php devient:
<?php require_once("sdb.php"); $result = pg_query($dbconn, "SELECT * FROM content ORDER BY name ASC"); header('Content-Type: application/json'); echo json_encode(pg_fetch_assoc($result));
À part, il y a quelques choses que vous voudrez faire avec votre contrôleur. Je changerais ceci:
myApp.controller('ContentCtrl', function ($scope, $http) { $http({method: 'GET', url: 'content.php'}).success(function(data) { $scope.contents = data; }); });
pour ça:
myApp.controller('ContentCtrl', ['$scope', '$http', function ($scope, $http) { $http.get('content.php') .success(function(data) { $scope.contents = data; }); }]);
Le '$scope', '$http',
supplémentaire '$scope', '$http',
avant que la définition de fonction ne vous permette de minimiser à l'avenir, et le .get
est juste une préférence personnelle, mais je pense qu'il est plus propre à lire.