"); //-->
我们可以使用内置的$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对象
varpromise=$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是可选的
varpromise=$http.jsonp("/api/users.json?callback=JSON_CALLBACK");
也可以将$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请求时使用。
从AngularJS1.3开始,它还可以在POST请求里发送二进制数据。要发送一个blob对象,你可以简单地通过使用data参数来传递它。
例如:
varblob=newBlob(['Helloworld'],{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服务会从缓存中取回请求的结果,而不会真的发送一个HTTPGET请求。
在这个例子里,由于设置了启用缓存,AngularJS默认会使用$cacheFactory,这个服务是AngularJS在启动时自动创建的。
如果想要对AngularJS使用的缓存进行更多的自定义控制,可以向请求传入一个自定义的缓存实例代替true。
以上就是扣丁学堂HTML5培训浅谈AngularJS中$http服务用法的全部内容,想要了解更多html5相关内容的小伙伴可以登录扣丁学堂官网查询,扣丁学堂不仅有专业的老师和与时俱进的课程体系,还有大量的html5视频教程供学员观看学习,想要学习html5的小伙伴快选择专业的html5在线学习机构扣丁学堂学习吧。扣丁学堂H5技术交流群:692172929。微信号:codingbb
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
纽约州州长凯西·霍楚尔签署RAISE法案以规范人工智能安全
国防工业检测的特殊性及策略
TDA2613功放电路
国产GPU实现万卡训练与推理双突破,摩尔线程发布“花港”新架构
卫星导航产品模拟测试技术及应用
TDA7050T功放电路
显示器资料
数字显示频率计的设计
大嘴业话:国防电子路在何方
液晶哦
TDA4601功放电路
台湾电信来电显示标准
瑞萨推进SDV路线图,采用3nm R-Car第五代平台
TDA2822D功放电路
[转帖]木木作ARM的Linux培训课程讲义(1)如何将自己的应用程序编译到uCLinux/Linux中
三星发布Exynos 2600:业界首创2nm GAA AP,AI性能提升113%
三星全球首款2nm芯片Exynos 2600玩“减法”:未集成5G基带
Gartner发布2026年影响基础设施和运营的重要趋势
面向军工的自动化测试,维护与诊断
构建国产GPU生态,摩尔线程举办首届MUSA开发者大会
液晶
FPGA和芯片融合时代
[转帖]木木作ARM的Linux培训课程讲义(1)如何将自己的应用程序编译到uCLinux/Linux中
OpenAI 在立法者权衡未成年人 AI 标准之际,为 ChatGPT 增加了新的青少年安全规则
2026年半导体行业趋势观察(Part 2)
西门子发布全新 PAVE360 Automotive,借助真实场景验证赋能下一代汽车研发
can控制芯片选型?
TDA3562A功放电路
图形点阵液晶显示模块DM12232B使用手册
液晶模块13264中文资料