简介AngularJS中$http服务的用法  更新时间:2016年02月06日 15:26:23   投稿:mrr   我们可以使用内置的$http服务直接同外部进行通信。$http服务只是简单的封装了浏览器原生的XMLHttpRequest对象。接下来通过本文给大家简单介绍angularjs中http服务的用法,喜欢的朋友可以参考下 我们可以使用内置的$http服务直接同外部进行通信。$http服务只是简单的封装了浏览器原生的XMLHttpRequest对象。 1、链式调用 $http服务是只能接受一个参数的函数,这个参数是一个对象,包含了用来生成HTTP请求的配置内容。这个函数返回一个promise对象,具有success和error两个方法。 $http({ url:’data.json’, method:’GET’ }).success(function(data,header,config,status){ //响应成功 }).error(function(data,header,config,status){ //处理响应失败 }); 2、返回一个promise对象 var promise=$http({ method:’GET’, url:”data.json” }); 由于$http方法返回一个promise对象,我们可以在响应返回时用then方法来处理回调。如果使用then方法,会得到一个特殊的参数,它代表了相应对象的成功或失败信息,还可以接受两个可选的函数作为参数。或者可以使用success和error回调代替。 promise.then(function(resp){ //resp是一个响应对象 },function(resp){ //带有错误信息的resp }); 或者这样: promise.success(function(data,status,config,headers){ //处理成功的响应 }); promise.error(function(data,status,hedaers,config){ //处理失败后的响应 }); then()方法与其他两种方法的主要区别是,它会接收到完整的响应对象,而success()和error()则会对响应对象进行析构。 3、快捷的get请求 ①$http.get(‘/api/users.json’); get()方法返回HttpPromise对象。 还可以发送比如:delete/head/jsonp/post/put 函数内可接受参数具体参照148页 ②以再发送jsonp请求举例说明: 为了发送JSONP请求,其中url必须包含JSON_CALLBACK字样。 jsonp(url,config) 其中config是可选的 var promise=$http.jsonp(“/api/users.json?callback=JSON_CALLBACK”); 4、也可以将$http当做函数来使用,这时需要传入一个设置对象,用来说明如何构造XHR对象。 $http({ method:’GET’, url:’/api/users.json’, params:{ ‘username’:’tan’ }); 其中设置对象可以包含以下主要的键: ①method 可以是:GET/DELETE/HEAD/JSONP/POST/PUT ②url:绝对的或者相对的请求目标 ③params(字符串map或者对象) 这个键的值是一个字符串map或对象,会被转换成查询字符串追加在URL后面。如果值不是字符串,会被JSON序列化。 比如这个: //参数会转为?name=ari的形式 $http({ params:{‘name’:’ari’} }); ④data(字符串或者对象) 这个对象中包含了将会被当作消息体发送给服务器的数据。通常在发送POST请求时使用。 从AngularJS 1.3开始,它还可以在POST请求里发送二进制数据。要发送一个blob对象,你可以简单地通过使用data参数来传递它。 例如: var blob=new Blob([‘Hello world’],{type:’text/plain’}); $http({ method:’POST’, url:’/’, data:blob }); 4、响应对象 AngularJS传递给then()方法的响应对象包含了四个属性。 data 这个数据代表转换过后的响应体(如果定义了转换的话) status 响应的HTTP状态码 headers 这个函数是头信息的getter函数,可以接受一个参数,用来获取对应名字值 例如,用如下代码获取X-Auth-ID的值: $http({ method: ‘GET’, url: ‘/api/users.json’ }).then (resp) { // 读取X-Auth-ID resp.headers(‘X-Auth-ID’); }); config 这个对象是用来生成原始请求的完整设置对象。 statusText(字符串) 这个字符串是响应的HTTP状态文本。 5、缓存HTTP请求 默认情况下,$http服务不会对请求进行本地缓存。在发送单独的请求时,我们可以通过向$http请求传入一个布尔值或者一个缓存实例来启用缓存。 $http.get(‘/api/users.json’,{ cache: true }) .success(function(data) {}) .error(function(data) {}); 第一次发送请求时,$http服务会向/api/users.json发送一个GET请求。第二次发送同一个GET请求时,$http服务会从缓存中取回请求的结果,而不会真的发送一个HTTP GET请求。 在这个例子里,由于设置了启用缓存,AngularJS默认会使用$cacheFactory,这个服务是AngularJS在启动时自动创建的。 如果想要对AngularJS使用的缓存进行更多的自定义控制,可以向请求传入一个自定义的缓存实例代替true。 下面给大家说下AngularJS $http知识。 AngularJS $http 是一个用于读取web服务器上数据的服务。 $http.get(url) 是用于读取服务器数据的函数。 AngularJS 实例 {{ x.Name + ‘, ‘ + x.Country }} 您可能感兴趣的文章: 深入理解Angularjs中$http.post与$.post AngularJS $http模块POST请求实现 AngularJS出现$http异步后台无法获取请求参数问题的解决方法 AngularJS中$http的交互问题 解决angularjs中同步执行http请求的方法 angularjs http 相关文章 angularJS实现表格部分列展开缩起示例代码 这篇文章主要介绍了angularJS实现表格部分列展开缩起示例代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 2021-09-09 AngularJs Javascript MVC 框架 这篇文章主要介绍了AngularJs Javascript MVC 框架的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下 2016-06-06 AngularJS $http post 传递参数数据的方法 今天小编就为大家分享一篇AngularJS $http post 传递参数数据的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 2018-10-10 Angular的$http的ajax的请求操作(推荐) 这篇文章主要介绍了Angular的$http的ajax的请求操作的相关资料,需要的朋友可以参考下 2017-01-01 AngularJS表格添加序号的方法 这篇文章主要介绍了AngularJS表格添加序号的方法,涉及AngularJS表格的遍历及序号添加实现技巧,需要的朋友可以参考下 2017-03-03 AngularGauge 属性解析详解 本文主要介绍AngularGauge 属性的知识,这里这里了详细的资料来介绍AngularGauge属性的内容知识,帮助大家学习参考,有需要的小伙伴可以参考下 2016-09-09 Angularjs 滚动加载更多数据 AngularJS 通过新的属性和表达式扩展了 HTML。本文主要给大家介绍Angularjs 滚动加载更多数据的相关知识,需要的朋友参考下吧 2016-03-03 angularjs 的数据绑定实现原理 本篇文章主要介绍了angularjs 的数据绑定实现原理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 2018-07-07 AngularJS 的$timeout服务示例代码 这篇文章主要介绍了AngularJS 的$timeout服务示例代码,需要的朋友可以参考下 2017-09-09 angular第三方包开发整理(小结) 本篇文章主要介绍了angular第三方包开发整理(小结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 2018-04-04 最新评论

我们可以使用内置的$http服务直接同外部进行通信。$http服务只是简单的封装了浏览器原生的XMLHttpRequest对象。

1、链式调用

$http服务是只能接受一个参数的函数,这个参数是一个对象,包含了用来生成HTTP请求的配置内容。这个函数返回一个promise对象,具有success和error两个方法。

$http({
url:'data.json',
method:'GET'
}).success(function(data,header,config,status){
//响应成功
}).error(function(data,header,config,status){
//处理响应失败
});

2、返回一个promise对象

var promise=$http({
method:'GET',
url:"data.json"
});

由于$http方法返回一个promise对象,我们可以在响应返回时用then方法来处理回调。如果使用then方法,会得到一个特殊的参数,它代表了相应对象的成功或失败信息,还可以接受两个可选的函数作为参数。或者可以使用success和error回调代替。

promise.then(function(resp){
//resp是一个响应对象
},function(resp){
//带有错误信息的resp
});

或者这样:

promise.success(function(data,status,config,headers){
//处理成功的响应
});
promise.error(function(data,status,hedaers,config){
//处理失败后的响应
});

then()方法与其他两种方法的主要区别是,它会接收到完整的响应对象,而success()和error()则会对响应对象进行析构。

3、快捷的get请求

①$http.get(‘/api/users.json’);

get()方法返回HttpPromise对象。

还可以发送比如:delete/head/jsonp/post/put 函数内可接受参数具体参照148页

②以再发送jsonp请求举例说明: 为了发送JSONP请求,其中url必须包含JSON_CALLBACK字样。

jsonp(url,config) 其中config是可选的

var promise=$http.jsonp(“/api/users.json?callback=JSON_CALLBACK”);

4、也可以将$http当做函数来使用,这时需要传入一个设置对象,用来说明如何构造XHR对象。

$http({
method:'GET',
url:'/api/users.json',
params:{
'username':'tan'
});

其中设置对象可以包含以下主要的键:

①method

可以是:GET/DELETE/HEAD/JSONP/POST/PUT

②url:绝对的或者相对的请求目标
③params(字符串map或者对象)
这个键的值是一个字符串map或对象,会被转换成查询字符串追加在URL后面。如果值不是字符串,会被JSON序列化。
比如这个:

//参数会转为?name=ari的形式
$http({
params:{'name':'ari'}
});

④data(字符串或者对象)

这个对象中包含了将会被当作消息体发送给服务器的数据。通常在发送POST请求时使用。

从AngularJS 1.3开始,它还可以在POST请求里发送二进制数据。要发送一个blob对象,你可以简单地通过使用data参数来传递它。
例如:

var blob=new Blob(['Hello world'],{type:'text/plain'});
$http({
method:'POST',
url:'/',
data:blob
});

4、响应对象

AngularJS传递给then()方法的响应对象包含了四个属性。

data

这个数据代表转换过后的响应体(如果定义了转换的话)

status

响应的HTTP状态码

headers

这个函数是头信息的getter函数,可以接受一个参数,用来获取对应名字值

例如,用如下代码获取X-Auth-ID的值:

$http({
method: 'GET',
url: '/api/users.json'
}).then (resp) {
// 读取X-Auth-ID
resp.headers('X-Auth-ID');
});

config

这个对象是用来生成原始请求的完整设置对象。

statusText(字符串)

这个字符串是响应的HTTP状态文本。

5、缓存HTTP请求

默认情况下,$http服务不会对请求进行本地缓存。在发送单独的请求时,我们可以通过向$http请求传入一个布尔值或者一个缓存实例来启用缓存。

$http.get('/api/users.json',{ cache: true })
.success(function(data) {})
.error(function(data) {});

第一次发送请求时,$http服务会向/api/users.json发送一个GET请求。第二次发送同一个GET请求时,$http服务会从缓存中取回请求的结果,而不会真的发送一个HTTP GET请求。

在这个例子里,由于设置了启用缓存,AngularJS默认会使用$cacheFactory,这个服务是AngularJS在启动时自动创建的。

如果想要对AngularJS使用的缓存进行更多的自定义控制,可以向请求传入一个自定义的缓存实例代替true。

下面给大家说下AngularJS $http知识。

AngularJS $http 是一个用于读取web服务器上数据的服务。

$http.get(url) 是用于读取服务器数据的函数。

AngularJS 实例

<div ng-app="myApp" ng-controller="customersCtrl"> 
<ul>
<li ng-repeat="x in names">
{{ x.Name + ', ' + x.Country }}
</li>
</ul>
</div>
<script>
var app = angular.module('myApp', []);
app.controller('customersCtrl', function($scope, $http) {
$http.get("http://www.runoob.com/try/angularjs/data/Customers_JSON.php")
.success(function(response) {$scope.names = response.records;});
});
</script>
您可能感兴趣的文章:

  • 深入理解Angularjs中$http.post与$.post
  • AngularJS $http模块POST请求实现
  • AngularJS出现$http异步后台无法获取请求参数问题的解决方法
  • AngularJS中$http的交互问题
  • 解决angularjs中同步执行http请求的方法
张贴在3