angularjs中的$http详解
- 语法:
- 要将区别先弄清$http服务,它是对原生XMLHttpRequest对象的简单封装,是只能接受一个参数的方法,
- 这个方法会返回一个promise对象,具有sccess和error两个方法。当然,我们也可以在响应返回时用then
- 方法来处理,会得到一个特殊的参数,代表了对象的成功或失败信息,或者可以使用success和error回调
- 代替。
- $http(
- ).then(function success(resp){
- //响应成功时调用,resp是一个响应对象
- },function error(resp){
- // 响应失败时调用,resp带有错误信息
- }
- );
- 可以使用then()函数来处理$http服务的回调
- then()函数接收的resp(响应对象)包含5个属性:
- 1. data(字符串或对象):响应体,就是后台返回的数据
- 2. status:相应http的状态码,如200
- 3. headers(函数):头信息的getter函数,可以接受一个参数,用来获取对应名字的值
- 4. config(对象):生成原始请求的完整设置对象
- 5. statusText:相应的http状态文本,如"ok"
- $http({
- url:url, //请求的url路径
- method:method, //GET/DELETE/HEAD/JSONP/POST/PUT
- params:params , //转为 ?param1=xx1¶m2=xx2的形式
- data: data //包含了将被当做消息体发送给服务器的数据,通常在POST请求时使用
- }
- }).success(function(response, status, header, config, statusText){
- //成功处理
- }).error(function(data,header,config,status){
- //错误处理
- });
- then写法与success参数是等价的,then方法和success方法的主要区别就是,then方法会接受到完整的响应对象,而
- success则会对响应对象进行析构。
- AngularJS中的简单请求 --- $http --- 一个类似jquery的$.ajax的对象,用于异步请求
- 语法:
- $http服务的设置对象:
- 当我们把$http当成函数来使用时即$http(),需要传入一个对象,这个对象可以包含以下键
- 1、method 字符串 表示发送的请求类型 get post jsonp等等
- 2、url 字符串 绝对或者相对的URL,请求的目标
- 3、params 字符串或对象 会被转化成查询字符串加到URL后面,如果不是字符串会被JSON序列化
- 4、data 字符串或者对象 这个对象包含了被当做消息体发送给服务器的数据,一般在POST请求中使用,并且从angular1.3开始可以在POST请求里发送二进制数据
- 如var blob = new Blob({name:’张三’}); $http({method:’get’,url:’/‘,data:blob});
- 5、headers 对象 在我们做POST跨域和后台配合的时候就用到了headers,其代表随请求发送的HTTP头字符串
- 6、xsrfHeaderName 字符串 保存XSFR令牌的HTTP头的名称
- 7、xsrfCookieName 字符串 保存XSFR令牌的cookie的名称
- 8、transformRequest 函数或函数组 用来对HTTP请求头和体信息进行转换,并返回转化后的版本,通常用于在请求发送给服务器之前对其序列化
- 9、transformResponse 函数或函数组 用来HTTP响应头和响应体信息进行转换,并返回转化后的版本,通常用来反序列化
- 10、cache 布尔或缓存对象 如果设置为true angularjs会用默认的$http缓存对GET请求进行缓存
- 11、timout 数值或者promise对象,如果为数值那么请求会在指定的毫秒后结束(会跳到失败的error方法里) ,如果为对象那么promise对象在被resolve时请求会被中止,方法执行完毕再执行请求
- 12、responseType 字符串 该选项会在请求中设置XMLHttpResponseType属性有以下类型: “”字符串默认,”arraybuffer”(arraybuffer),”blob”(blob对象),“document”(HTTP文档),”json“(从JSON对象解析出来的json字符串),”text“(字符串),”moz-blob“(Firefox的接收进度事件),”moz-chunked-text“(文本流),”moz-chunked-arraybuffer”(arraybuffer流)
- $http服务的快捷方法
- $http提供了一些快捷方法让我们使用,一共有六个(其实是六种请求模式)
- 1、$http.get(url字符串,config可选的配置-对象类型) 返回HttpPromise对象
- 2、$http.delete(url字符串,config可选的配置-对象类型) 返回HttpPromise对象
- 3、$http.head(url字符串,config可选的配置-对象类型) 返回HttpPromise对象
- 4、$http.jsonp(url字符串,config可选的配置-对象类型) 返回HttpPromise对象
- 5、$http.post(url字符串,data对象或字符串,config可选的配置-对象类型) 返回HttpPromise对象
- 6、$http.put(url字符串,data对象或字符串,config可选的配置-对象类型) 返回HttpPromise对象
- $http({
- url:url, //请求的url路径
- method:method, //GET/DELETE/HEAD/JSONP/POST/PUT
- params:params , //转为 ?param1=xx1¶m2=xx2的形式
- data: data //包含了将被当做消息体发送给服务器的数据,通常在POST请求时使用
- }
- }).success(function(response, status, header, config, statusText){
- //成功处理
- }).error(function(data,header,config,status){
- //错误处理
- });
- 特别注意:
- 1.请求参数说明:
- url:url, //请求的url路径
- method:method, //GET/DELETE/HEAD/JSONP/POST/PUT
- params:params , //转为 ?param1=xx1¶m2=xx2的形式
- data: data //包含了将被当做消息体发送给服务器的数据,通常在POST请求时使用
- 2.响应参数说明:
- response --- 响应体,即:要请求的数据
- status --- HTTP状态码
- header --- 头信息
- config --- 用来生成原始请求的完整设置对象
- statusText --- 相应的HTTP状态文本
- 3.缓存HTTP请求
- 默认情况下,$http服务不会对请求进行本地缓存。在发送单独请求时,可通过向$http请求传递一个布尔参数来启用缓存
- eg:
- $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。
- 1.GET方式 --- params参数会转为 ?param1=xx1¶m2=xx2的形式
- 1.$http请求:
- $http({
- url:"/api/users.json",
- method:'GET',
- params:{
- 'username':'jay'
- }
- }
- }).success(function (response, status, headers, config) {
- /*response -- 成功返回的数据
- status -- 状态码
- headers -- 头信息
- config -- 其他信息
- */
- }).error(function (response) {
- }
- });
- 2.快捷请求:
- $http.get(url, [config])
- .success(function(data){})
- .error(function(data){});
- 2.POST方式
- $http({method : 'POST',params : { id:123}, data:{name:'john',age:27}, url : "/mypath"})
- .success(function(response, status, headers, config){
- //do anything what you want;
- })
- .error(function(response, status, headers, config){
- //do anything what you want;
- });
- 2.快捷方式:
- $http.post(url, $scope.formData).success(function (response, status, headers, config) {
- ......
- }).error(function (response) {
- ......
- });
- 3.$http提交表单 --- 与Spring MVC交互, 使用这种方式
- 通用方式:
- $http({
- method: "POST",
- url: url,
- headers: {'Content-Type': 'application/x-www-form-urlencoded'},
- data: $.param($scope.formData)
- }).success(function(result){
- }).error(function(result){
- });
- 快捷方式:
- $http.post(url, $scope.formData)
- .success(function(result){
- })
- .error(function(result){
- });
- eg:
- var data = {
- "server":$scope.server,
- "time":$("#time").val(),
- "day":day
- }
- $http({
- method: "post",
- url: ctx+'/player/lossPlayer/list.htm',
- headers: {'Content-Type': 'application/x-www-form-urlencoded'},
- data: $.param(data)
- }).success(function(result){
- if(result.tip!=undefined){
- //当前绑定的数据清空
- $scope.players = [];
- alert(result.tip);
- }else{
- console.log(result.json);
- $scope.players = $.parseJSON($.parseJSON(result.json).players);
- }
- });
- 4.使用$http指定的方法发送HTTP请求:
- get(url, [config]);
- delete(url, [config]);
- post(url, data, [config]);
- put(url, data, [config]);
- 5.发送jsonp请求:
- 为了发送JSONP请求,url中必须包含JSON_CALLBACK参数, jsonp(url,config) 其中config是可选的
- eg:
- var promise=$http.jsonp("/api/users.json?callback=JSON_CALLBACK");
angularjs中的$http详解的更多相关文章
- angularJS中$apply()方法详解
这篇文章主要介绍了angularJS中$apply()方法详解,需要的朋友可以参考下 对于一个在前端属于纯新手的我来说,Javascript都还是一知半解,要想直接上手angular JS,遇到的 ...
- Angularjs中的$q详解
先说说什么是Promise,什么是$q吧.Promise是一种异步处理模式,有很多的实现方式,比如著名的Kris Kwal's Q还有JQuery的Deffered. 什么是Promise 以前了解过 ...
- AngularJS中transclude用法详解
这篇文章主要介绍了AngularJS中transclude用法,详细分析了transclude的具体功能.使用技巧与相关注意事项,需要的朋友可以参考下 本文实例讲述了AngularJS中transcl ...
- AngularJS select中ngOptions用法详解
AngularJS select中ngOptions用法详解 一.用法 ngOption针对不同类型的数据源有不同的用法,主要体现在数组和对象上. 数组: label for value in a ...
- AngularJS指令进阶 – ngModelController详解
AngularJS指令进阶 – ngModelController详解 在自定义Angular指令时,其中有一个叫做require的字段,这个字段的作用是用于指令之间的相互交流.举个简单的例子,假如我 ...
- php中关于引用(&)详解
php中关于引用(&)详解 php的引用(就是在变量或者函数.对象等前面加上&符号) 在PHP 中引用的意思是:不同的变量名访问同一个变量内容. 与C语言中的指针是有差别的.C语言中的 ...
- JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解
二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 ...
- 【转载】C/C++中extern关键字详解
1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义.此外extern也可用来进行链接指定. 也就是说extern ...
- oracle中imp命令详解 .
转自http://www.cnblogs.com/songdavid/articles/2435439.html oracle中imp命令详解 Oracle的导入实用程序(Import utility ...
随机推荐
- 获取iframe(angular 动态页面)高度
问题比较特殊,google了好久才得到启示 开发的angular页面,需要嵌入到客户的web页中,以iframe方式.由于iframe的高度需要指定,而angular动态生成机制导致页面高度会随时变化 ...
- php--------网页开发实现微信JS的(定位,地图显示,照片选择功能)
今天说说微信网页开发中一下JS的功能,分享一下,希望对各位有所帮助. 前提:要有公众号,和通过微信认证,绑定域名,得到相应信息,appid,appsecret等. 微信开发文档:https://mp. ...
- HDU - 5917 水题
题意:n个点m条边,找点集个数,点集满足有任意三个点成环,或者三个点互不相连 题解:暴力复杂度O(n^5/120*O(ok))==O(能过) //#pragma comment(linker, &qu ...
- Tomcat : IOException while loading persisted sessions: java.io.EOFException
严重: IOException while loading persisted sessions: java.io.EOFException严重: Exception loading sessions ...
- Alpha冲刺一 (10/10)
前言 队名:拖鞋旅游队 组长博客:https://www.cnblogs.com/Sulumer/p/10034872.html 作业博客:https://edu.cnblogs.com/campus ...
- Shell 命令行,写一个自动整理 ~/Downloads/ 文件夹下文件的脚本
Shell 命令行,写一个自动整理 ~/Downloads/ 文件夹下文件的脚本 在 mac 或者 linux 系统中,我们的浏览器或者其他下载软件下载的文件全部都下载再 ~/Downloads/ 文 ...
- win32程序显示网页
说是win32,实际程序中使用了atl的东西.所以新建win32程序时,记得勾选使用atl: 代码如下: #include "stdafx.h" #include "Wi ...
- 毕业了-java二叉树层次遍历算法
/*************************************** * 时间:2017年6月23日 * author:lcy * 内容:二叉树的层次遍历 * 需要借助队列这个数据结构,直 ...
- ballerina 学习二十五 项目docker 部署&& 运行
ballerina 官方提供了docker 的runtime,还是比较方便的 基本项目创建 使用cli创建项目 按照提示操作就行 ballerina init -i 项目结构 添加了dockerfil ...
- SEO -- WP如何建立SiteMap
站点地图对网站的seo优化有着相当重要的作用,而WordPress的优势就是插件特别的多,也特别符合蜘蛛的口味,在wp上建立站点地图是相当简单的事情,只需要一款插件和几步简单的配置 Google XM ...