2016-08-04 18 views
0

Ich muss ein einfaches JSON-Objekt mit Angular JS über einen HTTP-POST senden.AngularJS HTTP POST sendet keine Daten

ich eine einfache ng-Clik verknüpfte Funktion haben:

$scope.requestGoogleAuth = function() { 
     var googleCredentials = { 
      email: '[email protected]', 
      password: 'a2s4d' 
     }; 
     console.log(JSON.stringify(googleCredentials)); 
     /*$http({ 
      url: '/MyServlet', 
      method: "POST", 
      data: JSON.stringify(googleCredentials), 
      headers: {'Content-Type': 'application/json'} 
     })*/ 
     $http.post("/MyServlet", JSON.stringify(googleCredentials)).then(function success(response) { 
      $('#loginGoogleModal').modal('hide'); 
      $("#notificationsWrapper").notify(
       "Logged with Google", 
       { 
        className: 'success', 
        position: 'bottom right' 
       } 
      ); 
      $scope.googleLogged = true; 
      console.log($scope.googleLogged); 
     }, function error(response) { 
      $('#loginGoogleModal').modal('hide'); 
      $("#notificationsWrapper").notify(
       "Failed to login with Google", 
       { 
        className: 'error', 
        position: 'bottom right' 
       } 
      ); 
      $scope.googleLogged = false; 
      console.log($scope.googleLogged); 
     }); 

    }; 

Mein Controller-Konfiguration ist:

iftttApp.controller('indexController', 
        ['$scope', '$routeParams', '$window', '$http', function ($scope, $routeParams, $window, $http,) { ... }); 

Der POST mein Servlet erreicht Rückkehr Erfolg erfolgreich, jedoch wird die JSON setzen in nicht die HTTP-Nachricht, die POST-Daten sind leer. Warum?

+0

Mein Controller-Konfiguration ist: 'iftttApp.controller ('Indexcontroller' [ '$ scope', '$ routeParams', '$ Fenster', '$ http', Funktion ($ Umfang, $ routeParams, $ window, $ http,) {...}); ' – kitsune

+0

" der JSON wird nicht in die HTTP-Nachricht geschrieben, die POST-Daten werden leer "- Wie ermitteln Sie dies? Verwenden Sie die Entwicklertools im Browser, um den Netzwerkverkehr zu untersuchen? Versuchen Sie, es mit serverseitigem Java zu lesen, das Sie nicht in die Frage aufgenommen haben? – Quentin

+0

$ scope.nome und $ scope.regione sind definiert? –

Antwort

2

Versuchen Sie den folgenden Code. Eigentlich ist dein Beitrag kein richtiges Schlüsselpaar, Werte wie json in deiner Beitragsanfrage.

$scope.requestGoogleAuth = function() { 
     var googleCredentials = { 
      email: '[email protected]', 
      password: 'a2s4d' 
     }; 
     console.log(JSON.stringify(googleCredentials)); 
     /*$http({ 
      url: '/MyServlet', 
      method: "POST", 
      data: JSON.stringify(googleCredentials), 
      headers: {'Content-Type': 'application/json'} 
     })*/ 

     var postvalue = { 
      "nome": $scope.nome, 
      "regione": $scope.regione 
     } 
     $http.post("/MyServlet", angular.toJson(postvalue)).then(function success(response) { 
      $('#loginGoogleModal').modal('hide'); 
      $("#notificationsWrapper").notify(
       "Logged with Google", 
       { 
        className: 'success', 
        position: 'bottom right' 
       } 
      ); 
      $scope.googleLogged = true; 
      console.log($scope.googleLogged); 
     }, function error(response) { 
      $('#loginGoogleModal').modal('hide'); 
      $("#notificationsWrapper").notify(
       "Failed to login with Google", 
       { 
        className: 'error', 
        position: 'bottom right' 
       } 
      ); 
      $scope.googleLogged = false; 
      console.log($scope.googleLogged); 
     }); 

    }; 
+0

Es scheint, dass Sie eine Zeichenfolge, kein JSON-Objekt –

+0

posten, das ist, warum ich es in JSON mit angular.toJson() konvertieren. Für mich geht das. –

+0

Ich korrigiere den Code, getestet auch "angular.toJson (googleCredentials)", funktioniert aber nicht. – kitsune