简介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 相关文章推荐
jquery焦点图片切换(数字标注/手动/自动播放/横向滚动)
Jan 24 Javascript
在jQuery中使用$而避免跟其它库产生冲突的方法
Aug 13 Javascript
理解javascript中DOM事件
Dec 25 Javascript
浏览器环境下JavaScript脚本加载与执行探析之动态脚本与Ajax脚本注入
Jan 19 Javascript
Node.js环境下编写爬虫爬取维基百科内容的实例分享
Jun 12 Javascript
js获取指定字符前/后的字符串简单实例
Oct 27 Javascript
bootstrap模态框垂直居中效果
Dec 03 Javascript
javascript监听页面刷新和页面关闭事件方法详解
Jan 09 Javascript
js 获取元素的具体样式信息getcss(实例讲解)
Jul 05 Javascript
JavaScript使用Ajax上传文件的示例代码
Aug 10 Javascript
从组件封装看Vue的作用域插槽的实现
Feb 12 Javascript
js实现无刷新监听URL的变化示例代码详解
Jun 03 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
基于mysql的论坛(3)
2006/10/09 PHP
关于PHP5 Session生命周期介绍
2010/03/02 PHP
自用js开发框架小成 学习js的朋友可以看看
2010/11/16 Javascript
js模拟点击事件实现代码
2012/11/06 Javascript
基于Jquery和html5的7款个性化地图插件
2015/11/17 Javascript
jQuery实现的给图片点赞+1动画效果(附在线演示及demo源码下载)
2015/12/31 Javascript
js判断当前页面用什么浏览器打开的方法
2016/01/06 Javascript
Webpack 实现 AngularJS 的延迟加载
2016/03/02 Javascript
第七章之菜单按钮图标组件
2016/04/25 Javascript
javascript轮播图算法
2016/10/21 Javascript
基于JS组件实现拖动滑块验证功能(代码分享)
2016/11/18 Javascript
bootstrap table实现单击单元格可编辑功能
2017/03/28 Javascript
vue mint-ui 实现省市区街道4级联动示例(仿淘宝京东收货地址4级联动)
2017/10/16 Javascript
JS中数组与对象的遍历方法实例小结
2018/08/14 Javascript
JS使用Date对象实时显示当前系统时间简单示例
2018/08/23 Javascript
微信小程序实现文字跑马灯
2020/05/26 Javascript
npm 语义版本控制详解
2019/09/10 Javascript
js实现图片上传即时显示效果
2019/09/30 Javascript
详解Webpack抽离第三方类库以及common解决方案
2020/03/30 Javascript
windows如何把已安装的nodejs高版本降级为低版本(图文教程)
2020/12/14 NodeJs
在Python中实现贪婪排名算法的教程
2015/04/17 Python
django 解决manage.py migrate无效的问题
2018/05/27 Python
Python 字符串与二进制串的相互转换示例
2018/07/23 Python
Python2和3字符编码的区别知识点整理
2019/08/08 Python
Python连接Mysql进行增删改查的示例代码
2020/08/03 Python
高级护理实习生自荐信
2013/09/28 职场文书
毕业自我鉴定范文
2013/11/06 职场文书
法学研究生自我鉴定范文
2013/12/04 职场文书
体育专业学生自我评价范文
2014/01/17 职场文书
旺仔牛奶广告词
2014/03/20 职场文书
党的群众路线教育实践活动查摆问题自查报告
2014/10/10 职场文书
课堂打架检讨书200字
2014/11/21 职场文书
2016年感恩父亲节活动总结
2016/04/01 职场文书
致毕业季:你如何做好自己的职业生涯规划书?
2019/07/01 职场文书
Go语言基础函数基本用法及示例详解
2021/11/17 Golang
用Python爬取英雄联盟的皮肤详细示例
2021/12/06 Python