it-swarm.com.de

$ http.get (...). Erfolg ist keine Funktion

ich habe diesen Code:

app.controller('MainCtrl', function ($scope, $http){
  $http.get('api/url-api')
    .success(function (data, status, headers, config){
     }
}

Funktioniert in meiner lokalen Umgebung einwandfrei, aber auf einem Server wird der folgende Fehler zurückgegeben:

TypeError: $ http.get (...). Erfolg ist keine Funktion

Irgendwelche Ideen? Vielen Dank

93
Alejo Ribes

Die .success -Syntax war bis Angular v1.4.3 korrekt.

Für Versionen bis Angular v.1.6 müssen Sie die Methode then verwenden. Die Methode then() akzeptiert zwei Argumente: einen success und einen error-Rückruf, der mit einem Antwortobjekt aufgerufen wird.

Fügen Sie mit der Methode then() der zurückgegebenen Funktion callback eine Funktion promise hinzu.

Etwas wie das:

app.controller('MainCtrl', function ($scope, $http){
   $http({
      method: 'GET',
      url: 'api/url-api'
   }).then(function (response){

   },function (error){

   });
}

Siehe Referenz hier.

Shortcut Methoden sind ebenfalls verfügbar.

$http.get('api/url-api').then(successCallback, errorCallback);

function successCallback(response){
    //success code
}
function errorCallback(error){
    //error code
}

Es wird erwartet, dass die Daten, die Sie aus der Antwort erhalten, im Format JSON vorliegen. JSON ist eine großartige Möglichkeit, Daten zu transportieren, und das ist es auch einfach zu bedienen in AngularJS

Der Hauptunterschied zwischen den beiden besteht darin, dass der Aufruf .then() einen promise zurückgibt (aufgelöst mit einem Wert, der von einem callback zurückgegeben wird), während .success() eine traditionellere Methode zum Registrieren von callbacks ist und keinen promise zurückgibt.

191

Dies mag überflüssig sein, aber die oben am häufigsten gewählte Antwort lautet .then(function (success) und das hat bei mir ab Angular Version 1.5.8 nicht funktioniert. Verwenden Sie stattdessen response und geben Sie dann im Block response.data meine JSON-Daten ein, nach denen ich gesucht habe.

$http({
    method: 'get', 
    url: 'data/data.json'
}).then(function (response) {
    console.log(response, 'res');
    data = response.data;
},function (error){
    console.log(error, 'can not get data.');
});
6

Wenn Sie versuchen, AngularJs 1.6.6 vom 21.10.2017 zu verwenden, funktioniert der folgende Parameter als .success und wurde erschöpft. Die .then () -Methode akzeptiert zwei Argumente: eine Antwort und einen Fehlerrückruf, der mit einem Antwortobjekt aufgerufen wird.

 $scope.login = function () {
        $scope.btntext = "Please wait...!";
        $http({
            method: "POST",
            url: '/Home/userlogin', // link UserLogin with HomeController 
            data: $scope.user
         }).then(function (response) {
            console.log("Result value is : " + parseInt(response));
            data = response.data;
            $scope.btntext = 'Login';
            if (data == 1) {
                window.location.href = '/Home/dashboard';
             }
            else {
            alert(data);
        }
        }, function (error) {

        alert("Failed Login");
        });

Das obige Snipit funktioniert für eine Anmeldeseite.

2
Wazzie