2016-12-10 3 views
1

Ich versuche, Formulardaten an einen API-Endpunkt zu senden, den ich erstellt habe. Ich habe es in PostMan getestet und die API funktioniert gut und ich kann die Daten erfolgreich erhalten. Aber während ich diesen API-Endpunkt mit einer Funktion in angular js verbinde, erhalte ich den folgenden Fehler.

enter image description here

Heres mein Code:

$scope.saveSession = function() { 

    $http.post("/session/survey", $scope.session).success(function(data, status) { 
     $window.location.href = '/'; 

       console.log("Sucessfully getting data" + JSON.stringify(data)); 
    }) 
    } 

Hinweis:

$scope.session ist ein Objekt, das durch Verwendung des ng-model Tag bevölkert wird. Zum Beispiel:

<input type="text" ng-model="session.title"> 

bearbeiten (Controller-Code):

// This is our controller for the bio page 
var session = angular.module('session', ['sessionService']) 

session.controller('sessionCtrl', function($scope, $http, $window, sessionServices) { 

$scope.session = {}; 

$scope.saveSession = function() { 

    $scope.session.sessionNo = 1; 
    $scope.session.coach = "mmmm"; 
    $scope.session.modules = "wokr place"; 

    //console.log(user); 
    $http.post("/session/survey", $scope.session).success(function(data, status) { 
     $window.location.href = '/'; 
       console.log("Sucessfully getting added bio" + JSON.stringify(data)); 
    }) 
    }; 

}); 
+0

@Sajeetharan aktualisiert Frage zu sehen. – Skywalker

Antwort

2

Es ist, weil Sie $http.post().success verwenden sind.

Versuchen Sie;

$scope.saveSession = function() { 

$http.post("/session/survey", $scope.session).then(function(data, status) { 
    $window.location.href = '/'; 

      console.log("Sucessfully getting data" + JSON.stringify(data)); 
}) 
} 

Wir verwenden .then, um ein "Versprechen" vom $ http-Dienst zurückzugeben.

Hoffe es hilft!

4

Nutzung verspricht, „Erfolg“ Funktion besteht in $ http Objekt nicht ($ http Erfolgs- und Fehlermethoden nur in älteren Versionen von Angular 1.x verfügbar sind, aber sie haben in Schräg 1.6 entfernt):

// Simple GET request example: 
$http({ 
    method: 'GET', 
    url: '/someUrl' 
}).then(function successCallback(response) { 
    // this callback will be called asynchronously 
    // when the response is available 
    }, function errorCallback(response) { 
    // called asynchronously if an error occurs 
    // or server returns response with an error status. 
}); 

Mehr in der offiziellen Dokumentation https://docs.angularjs.org/api/ng/service/ $ http

+1

Beachten Sie, dass die Methoden $ http 'success' und' error' in älteren Versionen von Angular 1.x zur Verfügung standen, aber seit einer Weile als veraltet gelten und in Angular 1.6 entfernt wurden. Sie werden wahrscheinlich immer noch viele alte Angular Codes mit der 'success' Funktion sehen. Es ist Zeit, mit den Änderungen zu rollen und zu '.then' zu wechseln. –

+0

guten punkt, danke :) –

7

Das ist, weil .success() wirklich keine Funktion ist. Wie the documentation explains ist ein Versprechen von $http.post() zurückgegeben, die Sie Kette mit .then()

$http.post('/someUrl', data, config).then(successCallback, errorCallback);