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:
Veuillez me dire comment obtenir le seul nom d'un objet JSON.
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:
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;