Impossible de lier les données à partir de la base de données en utilisant angularJS

J'essaye de prendre les données d'une base de données et de la lier dans une vue en utilisant AngularJS. Pour cela, j'ai écrit une méthode WEM comme suit:

[WebMethod] public static string getname() { SqlHelper sql = new SqlHelper(); DataTable dt = sql.ExecuteSelectCommand("select cust_F_name from customer"); Dictionary<string, object> dict = new Dictionary<string, object>(); object[] arr = new object[dt.Rows.Count]; for (int i = 0; i <= dt.Rows.Count - 1; i++) { arr[i] = dt.Rows[i].ItemArray; } dict.Add(dt.TableName, arr); JavaScriptSerializer json = new JavaScriptSerializer(); return json.Serialize(dict); } 

Et je l'appelle en utilisant AngularJS:

 var DemoApp = angular.module('DemoApp', []); DemoApp.factory('SimpleFactory', function ($http) { return { getCustomer: function () { return $http.post('Home.aspx/getname', { name: "" }); } }; }); DemoApp.controller('SimpleController', function ($scope, SimpleFactory) { SimpleFactory.getCustomer().then(function(customer){ $scope.Customer =$.parseJSON( customer.d); }, function(error){ // error handling }); }); 

Je le lier en vue comme ceci:

 <html xmlns="http://www.w3.org/1999/xhtml" data-ng-app="DemoApp"> <head runat="server"> <title></title> </head> <body data-ng-controller="SimpleController"> <form id="form1" runat="server"> <div> Name<input type="text" data-ng-model="Name" />{{ Name }} <ul> <li data-ng-repeat="customerName in Customer | filter:Name">{{ customerName }}</li> </ul> </div> </form> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular.min.js"></script> <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> <script src="Script/Home.js" type="text/javascript"></script> </body> </html> 

Mais cela me donne ceci:

Entrez la description de l'image ici

Veuillez me dire comment obtenir le seul nom d'un objet JSON.

$ Http des méthodes renvoient une promesse.

Par conception, les promesses invoquent des rappels avec un seul argument .

Alors lorsque vous utilisez .then(function(customer) { , 'client' fera référence à un objet prometteur plutôt que le corps de réponse. Un objet prometteur a ces propriétés:

  1. Data – {string | Object} – Le corps de réponse transformé avec les fonctions de transformation.
  2. Status – {number} – code d'état HTTP de la réponse.
  3. En-têtes – {function ([headerName])} – Fonction getter d'en-tête.
  4. Config – {Object} – L'objet de configuration utilisé pour générer la requête.

Solution:

 DemoApp.controller('SimpleController', function ($scope, SimpleFactory) { SimpleFactory.getCustomer().then(function(object){ $scope.Customer = object.data.d; }, function(error){ // error handling }); }); 

En outre, vous pouvez utiliser le success et l' error , les arguments passés dans ces fonctions sont la représentation destructurée de l'objet de réponse passé dans la méthode alors.

Lire la suite: $ http docs

Vous ne devez pas faire parseJSON si le serveur renvoie un json valide. Juste utilisateur le résultat

$scope.Customer =customer.d;