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