简介AngularJS中$http服务的用法


Posted in Javascript onFebruary 06, 2016

我们可以使用内置的$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>
Javascript 相关文章推荐
IE中直接运行显示当前网页中的图片 推荐
Aug 31 Javascript
JavaScript Date对象 日期获取函数
Dec 19 Javascript
jQuery下通过replace字符串替换实现大小图片切换
May 22 Javascript
用js控制组织结构图可以任意拖拽到指定位置
Jan 17 Javascript
通过JS判断联网类型和连接状态的实现代码
Apr 01 Javascript
jQuery图片轮播实现并封装(一)
Dec 03 Javascript
ES6新特性之Symbol类型用法分析
Mar 31 Javascript
JAVA中截取字符串substring用法详解
Apr 14 Javascript
Javascript中toFixed计算错误(依赖银行家舍入法的缺陷)解决方法
Aug 22 Javascript
vue实现todolist功能、todolist组件拆分及todolist的删除功能
Apr 11 Javascript
微信小程序获取用户信息的两种方法wx.getUserInfo与open-data实例分析
May 03 Javascript
浅谈vue.watch的触发条件是什么
Nov 07 Javascript
详解AngularJS中$http缓存以及处理多个$http请求的方法
Feb 06 #Javascript
JavaScript中数组添加值和访问值常见问题
Feb 06 #Javascript
详解Angularjs filter过滤器
Feb 06 #Javascript
Angularjs中如何使用filterFilter函数过滤
Feb 06 #Javascript
浅析Javascript匿名函数与自执行函数
Feb 06 #Javascript
JS通过Cookie判断页面是否为首次打开
Feb 05 #Javascript
JavaScript判断图片是否已经加载完毕的方法汇总
Feb 05 #Javascript
You might like
PHP的栏目导航程序
2006/10/09 PHP
libmysql.dll与php.ini是否真的要拷贝到c:\windows目录下呢
2010/03/15 PHP
php上传文件,创建递归目录的实例代码
2013/10/18 PHP
javascript显示隐藏层比较不错的方法分析
2008/09/30 Javascript
3Z版基于jquery的图片复选框(asp.net+jquery)
2010/04/12 Javascript
关于图片的预加载过程中隐藏未知的
2012/12/19 Javascript
浅析document.ready和window.onload的区别讲解
2013/12/18 Javascript
js清理Word格式示例代码
2014/02/13 Javascript
实例解析JS布尔对象的toString()方法和valueOf()方法
2015/10/25 Javascript
jQuery移动端图片上传组件
2016/06/12 Javascript
AngularJS基础 ng-options 指令详解
2016/08/02 Javascript
js 点击a标签 获取a的自定义属性方法
2016/11/21 Javascript
AngularJS入门教程一:路由用法初探
2017/05/27 Javascript
JS实现利用两个队列表示一个栈的方法
2017/12/13 Javascript
关于vue中 $emit的用法详解
2018/04/12 Javascript
js+canvas实现验证码功能
2020/09/21 Javascript
JS滚轮控制图片缩放大小和拖动的实例代码
2018/11/20 Javascript
Vue获取页面元素的相对位置的方法示例
2020/02/05 Javascript
[56:20]LGD vs VP Supermajor 败者组决赛 BO3 第三场 6.10
2018/07/04 DOTA
[01:21:36]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
[01:03:41]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第一场 12.17
2020/12/19 DOTA
在PyCharm中批量查找及替换的方法
2019/01/20 Python
Python TCP通信客户端服务端代码实例
2019/11/21 Python
python实现简单俄罗斯方块
2020/03/13 Python
如何在windows下安装配置python工具Ulipad
2020/10/27 Python
video实现有声音自动播放的实现方法
2020/05/20 HTML / CSS
英国历史最悠久的DJ设备供应商:DJ Finance、DJ Warehouse、The DJ Shop
2019/09/04 全球购物
大学生入党自我鉴定
2013/10/31 职场文书
奶茶专卖店创业计划书
2014/01/18 职场文书
学生党员公开承诺书
2014/05/28 职场文书
优秀会计求职信
2014/07/04 职场文书
2014年驾驶员工作总结
2014/11/18 职场文书
一般纳税人申请报告
2015/05/18 职场文书
暖春观后感
2015/06/08 职场文书
四则混合运算教学反思
2016/02/23 职场文书
创业计划书之少年玩具店
2019/09/05 职场文书