Ich erhalte einige Daten über http get ajax.Zugriff auf AJAX-Antwortdaten außerhalb der AJAX-Funktion in angularjs
$.ajax({
type: "GET",
url: "/userdata/",
success: function(response){
$scope.steps = response.no_of_steps;
$scope.calories = response.calories;
},
error: function(){
alert("error");
}
});
Wenn ich es auf Konsole aus dem Inneren der Erfolgsfunktion drucken, druckt er den Wert wie:
success: function(response){
var $scope.steps = response.no_of_steps;
var $scope.calories = response.calories;
console.log($scope.steps, $scope.calories);
},
Aber wenn ich es auf colsole außerhalb meiner Ajax-Anforderung zu drucken, drucken Sie es nicht definiert. Wie ist das so?
$.ajax({
...
});
console.log($scope.steps, $scope.calories);
Zunächst einmal, warum sind Sie jQuery Ajax-Funktionen zu verwenden, wenn Sie [Angular des] (https://docs.angularjs.org/api/ng/service/$ http)? Zweitens, wenn Sie var vor $ scope.steps setzen Sie erstellen eine neue $ Scope-Variable innerhalb dieser Funktion, es wird nicht außerhalb der Funktion (Ihre undefined) existieren. – Astaroth
Sie brauchen die Variable nicht vor Ihrem Variablennamen. Entfernen Sie es und überprüfen Sie erneut – IsraGab
Das Problem ist, dass Sie "$ scope.steps" und "$ scope.calories" vor Ihrem "Erfolg" von Ajax "loggen". Wenn du sie wirklich auf "Konsole" haben willst, musst du warten, bis dein 'Ajax'-Anruf fertig ist. – manish