AngularJS XMLHttpRequest
AngularJS $http 是 AngularJS 中的一个核心服务,用于读取远程服务器的数据
用法
$http 服务用法如下
// 简单的 GET 请求,可以改为 POST $http({ method: 'GET', url: '/someUrl' }).then(function successCallback(response) { // 请求成功执行代码 }, function errorCallback(response) { // 请求失败执行代码 });
简写方法
POST 与 GET 简写方法
$http.get('/someUrl', config).then(successCallback, errorCallback); $http.post('/someUrl', data, config).then(successCallback, errorCallback);
此外还有以下简写方法
- $http.get
- $http.head
- $http.post
- $http.put
- $http.delete
- $http.jsonp
- $http.patch
更详细内容请移步 https://docs.angularjs.org/api/ng/service/$http
读取 JSON 文件
我们先创建一个 JSON 文件
https://www.twle.cn/static/tiy/html/angularjs/site.json
{ "sites": [ { "Name": "简单教程", "Url": "www.twle.cn", "Country": "CN" }, { "Name": "Google", "Url": "www.google.com", "Country": "USA" }, { "Name": "Facebook", "Url": "www.facebook.com", "Country": "USA" }, { "Name": "微博", "Url": "www.weibo.com", "Country": "CN" } ] }
AngularJS $http
AngularJS $http 是可以用于读取 web 服务器上数据的服务
$http.get(url) 是用于读取服务器数据的函数
废弃声明 (v1.5)
v1.5 中
$http
的success
和error
方法已废弃,请使用then
方法替代
AngularJS 1.5 以上版本
var app = angular.module('myApp', []); app.controller('siteCtrl', function($scope, $http) { $http({ method: 'GET', url: '/static/tiy/html/angularjs/site.json' }).then(function successCallback(response) { $scope.names = response.data.sites; }, function errorCallback(response) { // 请求失败执行代码 }); });
简写方法范例
<div ng-app="myApp" ng-controller="siteCtrl"> <ul> <li ng-repeat="x in names"> {{ x.Name + ', ' + x.Country }} </li> </ul> </div> <script> var app = angular.module('myApp', []); app.controller('siteCtrl', function($scope, $http) { $http.get("/static/tiy/html/angularjs/site.json") .then(function (response) {$scope.names = response.data.sites;}); }); </script>
AngularJS 1.5 以下版本 范例
<div ng-app="myApp" ng-controller="siteCtrl"> <ul> <li ng-repeat="x in names"> {{ x.Name + ', ' + x.Country }} </li> </ul> </div> <script> var app = angular.module('myApp', []); app.controller('siteCtrl', function($scope, $http) { $http.get("/static/tiy/html/angularjs/site.json") .success(function (response) {$scope.names = response.sites;}); }); </script>
注意
上面代码的 get 请求是本站的服务器,你不能直接拷贝到你本地运行,会存在跨域问题,解决办法就是将 site.json 的数据拷贝到你自己的服务器上