AngularJS AJAX - $http
$http to usługa AngularJS do odczytywania danych ze zdalnych serwerów.
AngularJS $http
Usługa AngularJS $http
wysyła żądanie do serwera i zwraca odpowiedź.
Przykład
Wyślij proste żądanie do serwera i wyświetl wynik w nagłówku:
<div ng-app="myApp" ng-controller="myCtrl">
<p>Today's welcome
message is:</p>
<h1>{{myWelcome}}</h1>
</div>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl',
function($scope, $http) {
$http.get("welcome.htm")
.then(function(response) {
$scope.myWelcome
= response.data;
});
});
</script>
Metody
Powyższy przykład wykorzystuje .get
metodę $http
usługi.
Metoda .get to skrótowa metoda usługi $http. Istnieje kilka metod skrótów:
.delete()
.get()
.head()
.jsonp()
.patch()
.post()
.put()
Powyższe metody to skróty do wywołania usługi $http:
Przykład
var app = angular.module('myApp', []);
app.controller('myCtrl',
function($scope, $http) {
$http({
method : "GET",
url : "welcome.htm"
}).then(function mySuccess(response) {
$scope.myWelcome = response.data;
}, function myError(response)
{
$scope.myWelcome =
response.statusText;
});
});
Powyższy przykład wykonuje usługę $http z obiektem jako argumentem. Obiekt określa metodę HTTP, adres URL, co zrobić w przypadku sukcesu i co zrobić w przypadku niepowodzenia.
Nieruchomości
Odpowiedzią z serwera jest obiekt o następujących właściwościach:
.config
obiekt użyty do wygenerowania żądania..data
ciąg znaków lub obiekt przenoszący odpowiedź z serwera..headers
funkcja używana do uzyskania informacji nagłówka..status
liczba określająca status HTTP..statusText
ciąg znaków określający stan HTTP.
Przykład
var app = angular.module('myApp', []);
app.controller('myCtrl',
function($scope, $http) {
$http.get("welcome.htm")
.then(function(response) {
$scope.content
= response.data;
$scope.statuscode
= response.status;
$scope.statustext
= response.statusText;
});
});
Aby obsłużyć błędy, dodaj jeszcze jedną funkcję do .then
metody:
Przykład
var app = angular.module('myApp', []);
app.controller('myCtrl',
function($scope, $http) {
$http.get("wrongfilename.htm")
.then(function(response) {
// First function handles success
$scope.content
= response.data;
}, function(response) {
// Second function handles error
$scope.content = "Something went wrong";
});
});
JSON
Oczekuje się, że dane otrzymane z odpowiedzi będą w formacie JSON.
JSON to świetny sposób na transport danych i jest łatwy w użyciu w AngularJS lub dowolnym innym JavaScript.
Przykład: Na serwerze mamy plik, który zwraca obiekt JSON zawierający 15 klientów, wszystko opakowane w tablicę o nazwie records
.
Kliknij tutaj, aby przyjrzeć się obiektowi JSON.
Przykład
Dyrektywa ng-repeat
jest idealna do przechodzenia przez tablicę:
<div ng-app="myApp" ng-controller="customersCtrl">
<ul>
<li
ng-repeat="x in myData">
{{ x.Name + ', ' + x.Country }}
</li>
</ul>
</div>
<script>
var app = angular.module('myApp',
[]);
app.controller('customersCtrl',
function($scope, $http) {
$http.get("customers.php").then(function(response) {
$scope.myData
= response.data.records;
});
});
</script>
Wyjaśnienie aplikacji:
Aplikacja definiuje customersCtrl
kontroler za pomocą
obiektu $scope
i
$http
.
$http
jest obiektem XMLHttpRequest do żądania danych zewnętrznych.
$http.get()
odczytuje dane JSON z
https://www.w3schools.com/angular/customers.php .
Po pomyślnym zakończeniu kontroler tworzy właściwość , myData
w zakresie, z danymi JSON z serwera.