7 votes

Obtenir des données à partir d'une url JSON en utilisant angularJS

Je suis vraiment novice dans l'utilisation d'AngularJS et de Javascript. J'ai besoin d'obtenir le totalResults des données provenant d'une source JSON qui ressemble à ceci :

{
 "queries": {
  "request": [
   {
    "totalResults": "51"
   }
  ]
 }
}

Une fois les données obtenues, j'ai besoin qu'elles s'affichent dans une liste en utilisant AngularJS. J'ai vraiment essayé d'utiliser .ajax et .getJSON, mais je n'arrive pas à les faire fonctionner, étant donné mon manque total de connaissances sur l'utilisation de JavaScript. J'apprécie vraiment votre aide ! Mon AngularJS ressemble à ceci :

function MyController($scope){
        $scope.url = "https://www.googleapis.com/customsearch/v1?key=[MYKEY]&cx=[MYSECRETKEY]&q=flowers&alt=json&fields=queries(request(totalResults))";
        $scope.newMessage = "";
        $scope.messages = ["Steve Jobs - 515,000,000 results"]; 

        $scope.add = function(){
            $scope.messages.push($scope.newMessage);
        };
        }
  }

Dans la partie HTML, j'ai ceci :

<input type="text" ng-model="newMessage">
    <input type="submit" ng-click="add()" value="Click to find out!">

Lorsque l'utilisateur clique sur le bouton, je veux que l'url soit appelée et que la fonction $scope.newMessage devrait être la valeur dans totalResults. Merci pour votre aide !

15voto

Valentyn Shybanov Points 8483

Vous pouvez utiliser $http service : Documentation

Donc vous pouvez :

$scope.add = function(){
  $http.get($scope.url).then(function(response) {
            $scope.newMessage = response.data.queries.request.totalResults;
            $scope.messages.push($scope.newMessage);
  });
};

1voto

Arshabh Agarwal Points 464

Lire un peu dans le service $http fourni par AngularJS

voici l'indice du code que vous devez utiliser

$scope.add = function(){
    $http.get(url).then(function(response){
        queries = response.queries;
        $scope.newMessage = queries.request.totalResults;
    })
}

1voto

Quỳnh MSO Points 66

Véase http://plnkr.co/edit/nZkYsxLHLvf3SZNiJKic?p=info

En suivant votre lien, je viens de trouver une erreur :

var x = searchResults.split('.');

n'a pas de fonction split() si je remplace : x = "abc".

le résultat : Steve Jobs - 515.000.000 résultats - a.b résultats dsgdfg - résultats a.b.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X