我们可以使用内置的$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 函数内可接受参数

②以再发送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请求时使用。

它还可以在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。

转载于:https://www.cnblogs.com/lrbee/p/6020767.html

AngularJS 后台交互相关推荐

  1. AngularJS 学习笔记 - $http.post 跟后台交互

    为什么80%的码农都做不了架构师?>>>    在使用$http.post 向后台post数据时,采用$http.post(url, data) 的方式,后台无法接收到数据 代码: ...

  2. 笔记:前端与后台交互

    前端与后台交互 由于最近和大牛聊天,所得一些感悟,写下来,以勉励自己 交互方式 http请求(问答模式) 通过传统的发送请求接收相应,一问一答的模式获得数据,主要负责传递参数,接收数据模版,渲染数据, ...

  3. 微信小程序 与后台服务器交互,微信小程序 与后台交互----传递和回传时间

    wxml代码 日期选择器 当前选择: {{date}} 提交 返回的值:{{date2}} index.js代码 abc: function (e) {//该函数用于和后台交互 var that = ...

  4. easyui框架前后端交互_Easyui Datagrid增删改及后台交互(java)

    最近项目的特殊性可算是把我折腾得够呛,从最开始的整站JS,到现在的Liferay,且不说后台,单单前台框架就让我从Dojo到YUI又到AUI.jQuery.ExtJS,常用API翻了一遍,常见问题解决 ...

  5. JSON数据格式以及与后台交互数据转换实例

    /*作者:烟大阳仔时间:20131013介绍:主要了解一下json的格式,看看数据是怎么存储的 */ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4 ...

  6. flash as3与后台php交互用户注册例子,as3与PHP后台交互2

    怎么样,是不是也很方便的实现了as3和后台的数据传输?恩,现在我们的程序可以双向交互数据了,但这只是一些简单的数据,如果你要传输带有结构的数据,(熟悉as2的人都知道loadVars可以自动解析下载数 ...

  7. JEECG - 基于代码生成器的J2EE智能开发框架 续六: JEECG 前台页面和后台交互讲解

    近期有朋友对 EasyUI和后台交互方式不理解,特做一下简单整理,希望能对大家有所帮助!!! 一般情况下一个功能模块分为:增.删.改.查四个功能点; 针对功能的页面设计如下: [OLD]老式页面设计采 ...

  8. vue后端框架mysql_vue框架之前后台交互、element-ui

    vue框架之前后台交互.element-ui vuex(了解) 注:可以完成任意间组件信息交互(移动端) vuex是实现任何组件间的信息交互,可以理解为全局的一个单例,为任何一个组件共享vue仓库里的 ...

  9. java中程序跳转_java程序中先后台交互的两种实现方式以及页面之间的跳转

    虽然如今市面上很流行先后端分离,可是在不少企业中仍是使用的是SSH框架,先后端不分离. 那么此类先后端有其自身独特的先后台交互的方式,可是也支持js/jquery.下面对这两种方式作一下概括.java ...

最新文章

  1. GitHub现在已支持函数定义跳转,妈妈再也不怕我记性差了
  2. 【Java深入研究】2、JDK 1.8 LinkedList源码解析
  3. TimingWheel 时间轮详解
  4. 懒惰的JSF Primefaces数据表分页–第2部分
  5. 13.Data Leakage
  6. linux安装docker容器(copy就完了)
  7. 全球AI泰斗Stuart Rusell:研究人工智能太诱人了,不可抗拒
  8. 3.HP服务器iLo安装系统镜像
  9. RSA 含两道oj 上ctf题目
  10. Gradient vanishing and explosion
  11. 从家乐福中国到中国家乐福
  12. 华为手机计算机怎么语音算术,华为自带的语音识别功能太实用了!这样操作,3秒语音变文字...
  13. oracle 视图、索引、序列、同义词
  14. 百度云资源下载链接获取
  15. ffmpeg转码php配置,PHP+ffmpeg+nginx的配置实现视频转码(转)
  16. 泛微oa流程表单之check框至少勾选一个
  17. 牛客网大厂在线笔试输入输出练习python3版
  18. Android 高仿唱吧 咔拉ok 商业项目开源代码 K歌合成 伴奏录音合成MP3(音频五)
  19. Linux(使用 Bash 执行命令)
  20. 如何选择软件外包公司?

热门文章

  1. div+css布局与seo的关系
  2. Vue2.0史上最全入坑教程(中)—— 脚手架代码详解
  3. Supervisor使用说明
  4. An unknown error occurred.
  5. 用VS开发PHP扩展
  6. mac/centos下添加永久alias
  7. GNOME下也是Alt+F2,输入gnome-terminal
  8. Python内置函数filter, map, reduce
  9. Lync Server 2013 标准版部署(十)边缘服务器部署[三]
  10. 服务注册中心,Eureka与Zookeeper比较