2016-11-23 3 views
-2

ich Ajax-Aufruf Ich versuche auf einem Controller zur Umsetzung der Liste aller Studenten zu bekommen, aber ich bin immer nicht auf eine Schaltfläche klicken ich meinen Code bin setzen hier bitte jemand helfenAjax-Aufruf funktioniert nicht in AngularJS

hier
module.controller("GetController", function ($scope, $http) { 
    $scope.getUser = function() { 
     console.log(getUser); 
      var getdata= $.ajax({ 
      type: 'POST', 
      url: "/GetUserDetails", 
      dataType: "json", 
      contentType: "application/json", 
      data: '{}', 
      success: function (data) { 
       var parsed = $.parseJSON(data.d); 
       $.each(parsed, function (i, jsondata) { 
        $("#showdata").append("ID: " + jsondata.Id + "<br/>" + "FirstName: " + jsondata.FirstName + "<br/>" + "SecondName: " + jsondata.SecondName + "<br/>" + "EmailId: " + jsondata.EmailId + "<br/>" + "Mobile: " + jsondata.Mobile); 
       }); 
      }, 
      error: function (XHR, errStatus, errorThrown) { 
       var err = JSON.parse(XHR.responseText); 
       errorMessage = err.Message; 
       console.log(errorMessage); 
      } 
     }); 
    } 
}); 

ist die hTML-

<div ng-controller="GetController" id="showdata"> 
    <table> 
     <tr> 
      <td>Id</td> 
      <td>FirstName</td> 
      <td>SecondName</td> 
      <td>EmailId</td> 
      <td>Mobile</td> 
     </tr> 
     <tr> 
      <td>{{Id}}</td> 
      <td>{{FirstName}}</td> 
      <td>{{SecondName}}</td> 
      <td>{{EmailId}}</td> 
      <td>{{Mobile}}</td> 
     </tr> 
    </table>  
    <input type="submit" ng-click="getUser()" value="Getdata" /> 

und hier ist der Controller-Code

[HttpPost] 
    [Route("GetUserDetails")] 
    public async Task<bool> GetUserDetails([FromBody]object obj) 
    { 
     return await CenterGateWay.GetStudentlist(); 

    } 
+2

Wie speziell ist es Versagen? Gibt es einen Fehler in der JavaScript-Konsole? Sind Angular und jQuery geladen? Wird der Code überhaupt ausgeführt? Wird die AJAX-Anfrage gestellt? Wie lautet die Antwort des Servers? "Es funktioniert nicht" ist keine sehr nützliche Beschreibung des Problems. (Auch, warum 'GetStudentList' und' GetUserDetails 'einen' bool' zurückgeben? Das scheint ... irreführend.) – David

+0

nein kein Fehler in der Konsole –

+1

Sie verwenden jQuery und eckig in einer falschen Weise. Machen Sie keine DOM-Manipulation in Ihrem Controller, sondern schieben Sie sie nur auf Modelle, wo Sie sie mit eckigen Rendern rendern. – devqon

Antwort

1

Sie missbrauchen die Kombination von jQuery und eckig. Machen Sie niemals DOM-Manipulationen in Ihrem Controller, sondern lassen Sie eckig damit umgehen. So etwas sollte funktionieren:

$scope.users = []; 

$scope.getUser = function() { 
    $.ajax({ 
     type: 'POST', 
     url: "/GetUserDetails", 
     dataType: "json", 
     contentType: "application/json", 
     data: '{}', 
     success: function (data) { 
      // you have to trigger the digest cycle here, 
      // because you use jquery's ajax which won't automatically be 
      // picked up by angular 
      $scope.$apply(function(){ 
       $scope.users = angular.fromJson(data.d); 
      }); 
     }, 
     error: function (XHR, errStatus, errorThrown) { 
      var err = angular.fromJson(XHR.responseText); 
      errorMessage = err.Message; 
      console.log(errorMessage); 
     } 
    }); 
} 

Und in der Ansicht:

<table> 
    <tr> 
     <td>Id</td> 
     <td>FirstName</td> 
     <td>SecondName</td> 
     <td>EmailId</td> 
     <td>Mobile</td> 
    </tr> 
    <tr ng-repeat="user in users"> 
     <td>{{ user.Id }}</td> 
     <td>{{ user.FirstName }}</td> 
     <td>{{ user.SecondName }}</td> 
     <td>{{ user.EmailId }}</td> 
     <td>{{ user.Mobile }}</td> 
    </tr> 
</table> 

Noch besser, gibt es keine Notwendigkeit Jquery verwenden überhaupt:

$scope.getUser = function() { 
    $http.post("/GetUserDetails").then(function(data) { 
     $scope.users = data.d; 
    }, function(error) { 

    }); 
} 
+0

danke sir für dich GROßE AUFGABE! –