2016-12-10 4 views
1

Я пытаюсь отправить данные формы в конечную точку API, которую я создал. Я тестировал его в PostMan, и API хорошо работает, и я могу получить данные успешно. Но при подключении этой конечной точки API к функции в угловых js я получаю следующую ошибку.

enter image description here

Heres мой код:

$scope.saveSession = function() { 

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

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

Примечание:

$scope.session является объектом, который заселяется с помощью ng-model тега. Например:

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

Edit (код контроллера):

// 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 увидеть обновленный вопрос. – Skywalker

ответ

2

Это потому, что вы используете $http.post().success.

Попробуйте;

$scope.saveSession = function() { 

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

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

Мы используем. Then, чтобы вернуть «обещание» из службы $ http.

Надеюсь, это поможет!

4

Использование обещаний Функция «успех» не существует в объекте $ http ($ http success и методы ошибки доступны только в более ранних версиях Angular 1.x, но они удалены в Angular 1.6):

// 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. 
}); 

Больше в официальной документации https://docs.angularjs.org/api/ng/service/ $ HTTP

+1

Обратите внимание, что методы $ http 'success' и' error' были доступны в более ранних версиях Angular 1.x, но они устарели на некоторое время и удалены в Angular 1.6. Таким образом, вы, вероятно, все еще увидите много старого углового кода, используя функцию «success». Пришло время катиться с изменениями и переключиться на '.then'. –

+0

хороший момент, спасибо :) –

7

это потому, что .success() на самом деле не является функцией. Как the documentation explains, обещание возвращается $http.post(), которые вы можете цепи с .then()

$http.post('/someUrl', data, config).then(successCallback, errorCallback); 
Смежные вопросы