浅谈AngularJS中$http服务的简单用法分分快三计划

作者:分分快三计划

1、$http伏乞方式

      格式:axios.post(url,data,[options]);

从AngularJS 1.3上马,它还足以在POST央浼里发送二进制数据。要发送一个blob对象,你能够简轻便单地通过采取data参数来传递它。

分分快三计划 1分分快三计划 2

    1、基本接纳格式

◇statusText(字符串卡塔尔国:那几个字符串是响应的HTTP状态文本。

// 5、$http提交表单  --- 与Spring MVC交互, 使用这种方式
    // 通用方式:
    $http({
        method: "POST",
        url: url,
        headers: {'Content-Type': 'application/x-www-form-urlencoded'},
        data: $.param($scope.request)
    }).success(function(result){

    }).error(function(result){
    });

    // 快捷方式:
    $http.post(url, $scope.formData)
        .success(function(result){
        })
        .error(function(result){
        });

    2、传参情势

依然那样:

3、POST方式

 

then()方法与任何两种艺术的尤为重要区别是,它会吸收接纳到生机勃勃体化的响应对象,而success()和error()则会对响应对象开展析构。

 

二、 使用axios发送AJAX请求

get()方法重回HttpPromise对象。

    /*$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、cache 布尔或缓存对象 如果设置为true angularjs会用默认的$http缓存对GET请求进行缓存
     7、timout 数值或者promise对象,如果为数值那么请求会在指定的毫秒后结束(会跳到失败的error方法里) ,如果为对象那么promise对象在被resolve时请求会被中止,方法执行完毕再执行请求
     8、xsrfHeaderName 字符串 保存XSFR令牌的HTTP头的名称
     9、xsrfCookieName  字符串 保存XSFR令牌的cookie的名称
     10、transformRequest 函数或函数组 用来对HTTP请求头和体信息进行转换,并返回转化后的版本,通常用于在请求发送给服务器之前对其序列化
     11、transformResponse 函数或函数组 用来HTTP响应头和响应体信息进行转换,并返回转化后的版本,通常用来反序列化
     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对象

*/

主干出殡和安葬情势2

//参数会转为?name=ari的形式
$http({
params:{'name':'ari'}
});

分分快三计划 3分分快三计划 4

基本返送点子

var blob=new Blob(['Hello world'],{type:'text/plain'});
$http({
method:'POST',
url:'/',
data:blob
});
   // 4、发送jsonp请求:
    //       为了发送JSONP请求,url中必须包含JSON_CALLBACK参数, jsonp(url,config) 其中config是可选的
    // eg:
        var promise=$http.jsonp("/api/users.json?callback=JSON_CALLBACK");

  2、发送get请求

可以是:GET/DELETE/HEAD/JSONP/POST/PUT

// 3、POST方式
    $http({method : 'POST',params : { id:1}, data:{name:'admin',age:1}, url : "/doc"})
        .success(function(response, status, headers, config){
            /*成功信息*/
        })
        .error(function(response, status, headers, config){
            /*失败信息*/
        });

    // 快捷方式:
    $http.post(url,  $scope.formData).success(function (response, status, headers, config) {
        /*成功信息*/
    }).error(function (response) {
        /*失败信息*/
    });

  2、axios是二个基于Promise的HTTP央浼客商端,用来发送央求,也是vue2.0合法推荐的,同一时间不再对vue-resource实行翻新和保证

$http({
method: 'GET',
url: '/api/users.json'
}).then (resp) {
// 读取X-Auth-ID
resp.headers('X-Auth-ID');
});

分分快三计划 5分分快三计划 6

  1、vue自身不扶持发送AJAX诉求,要求接受vue-resource(vue1.0本子卡塔尔、axios(vue2.0本子卡塔尔等插件达成

◇status:响应的HTTP状态码

5、$http提交表单

       this.$http.post(url, [body], [options])

假设想要对AngularJS使用的缓存进行越来越多的自定义调控,可以向央浼传入三个自定义的缓存实例代替true。

 

分分快三计划 7分分快三计划 8

由于$http方法重返一个promise对象,大家得以在响应重返时用then方法来管理回调。固然使用then方法,会收获四个独竖一帜的参数,它意味着了对应对象的成功或战败音讯,仍然为能够选择四个可选的函数作为参数。可能可以利用success和error回调代替。

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>发送AJAX请求</title>
    <script src="js/vue.js"></script>
    <script src="js/axios.min.js"></script>
    <script>
        window.onload=function(){
            new Vue({
                el:'#itany',
                data:{
                    user:{
                        name:'alice',
                        age:19
                    },
                },
                methods:{
                    sendPost(){
                        // axios.post('server.php',{
                        //         name:'alice',
                        //         age:19
                        // }) //该方式发送数据是一个Request Payload的数据格式,一般的数据格式是Form Data格式,所有发送不出去数据
                        // axios.post('server.php','name=alice&age=20&') //方式1通过字符串的方式发送数据
                        axios.post('server.php',this.user,{  //方式2通过transformRequest方法发送数据,本质还是将数据拼接成字符串
                            transformRequest:[
                                function(data){
                                    let params='';
                                    for(let index in data){
                                        params =index '=' data[index] '&';
                                    }
                                    return params;
                                }
                            ]
                        })
                        .then(resp => {
                            console.log(resp.data);
                        }).catch(err => {
                            console.log('请求失败:' err.status ',' err.statusText);
                        });
                    },
                }
            });
        }
    </script>
</head>
<body>
    <div id="itany">
        <button @click="send">发送AJAX请求</button>

        <button @click="sendGet">GET方式发送AJAX请求</button>

    </div>
</body>
</html>

③params(字符串map大概指标)

分分快三计划 9分分快三计划 10

View Code

var promise=$http({
method:'GET',
url:"data.json"
});

4、发送jsonp请求

分分快三计划 11分分快三计划 12

promise.then(function(resp){
//resp是一个响应对象

},function(resp){
//带有错误信息的resp

});

6、使用$http钦命的点子发送HTTP央求

       this.$http.delete(url, [options])

1、链式调用

分分快三计划 13分分快三计划 14

  1、安装axios并引入

4、也能够将$http当作函数来行使,当时须要传入一个设置对象,用来声明怎么样协会XHLX570对象。

 

      格式1:axios([options])        #这种格式直接将享有数据写在options里,options其实是个字典

5、缓存HTTP请求

分分快三计划 15分分快三计划 16

      格式2:axios.get(url[,options]);

内部设置对象能够包涵以下重点的键:

2、GET方式

分分快三计划 17分分快三计划 18

②以再发送jsonp须要比如表达: 为了发送JSONP央求,个中url必得含有JSON_CALLBACK字样。

  // 6、使用$http指定的方法发送HTTP请求:
    get(url, [config]);
    delete(url, [config]);
    post(url, data, [config]);
    put(url, data, [config]);

    3、案例:

jsonp(url,config) 当中config是可选的

// 1、$http请求方式
    /**
     * 请求参数说明:
     *url:url,           //请求的url路径
     *method:method,    //GET/DELETE/HEAD/JSONP/POST/PUT
     *params:params ,   //转为  ?param1=xx1¶m2=xx2的形式
     *data: data        //包含了将被当做消息体发送给服务器的数据,通常在POST请求时使用
     */

    $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){
        //成功处理

        // response     ---  响应体,即:要请求的数据
        // status       ---  HTTP状态码
        // header      ---  头信息
        // config       ---  用来生成原始请求的完整设置对象
        // statusText   ---  相应的HTTP状态文本

    }).error(function(data,header,config,status){
        //错误处理
    });
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="x-ua-compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>发送AJAX请求</title>
    <script src="js/vue.js"></script>
    <script src="js/axios.js"></script>
    <script src="js/vue-resource.js"></script>
</head>

<body>
<div id="itany">
    <a>{{name}}</a>

    <button v-on:click="send">sendJSONP</button>

</div>
</body>
<script>
    new Vue({
        el: '#itany',
        data:{
            name: 'alice',
            age: 19
                    },
        methods:{
            send:function(){
//                https://sug.so.360.cn/suggest?callback=suggest_so&encodein=utf-8&encodeout=utf-8&format=json&fields=word&word=a
                this.$http.jsonp('https://sug.so.360.cn/suggest',
                    {params:{
                        word:'a'
                    }}
                ).then(function (resp) {
                    console.log(resp.data)
                })

            }
        }
    })
</script>
</html>

2、再次来到多个promise对象

// 2、GET方式
    // $http---get请求方式--- params参数会转为  ?param1=xx1¶m2=xx2的形式
    $http({
        url:"/doc.json",
        method:'GET',
        params:{
            'username':'admin'
        }
    }).success(function (response, status, headers, config) {
        /*成功信息*/
    }).error(function (response) {
        /*失败信息*/
    });
    //快捷请求:
    $http.get(url, [config])
        .success(function(data){})
        .error(function(data){});

    2、使用vue-resource发送跨域央求

AngularJS传递给then(卡塔尔国方法的响应对象包涵了多脾脾性。

 

       this.$http.get(url, [options])

例如:

分分快三计划 19分分快三计划 20

 

例如这几个:

$http常用的多少个参数

分分快三计划 21分分快三计划 22

还足以发送例如:delete/head/jsonp/post/put 函数内可承担参数具体参照148页

 

    1、基本选择格式

◇config:这几个目的是用来生成原本央求的完整设置对象。

 

  3、参考:GitHub上搜索axios,查看API文档

④data(字符串可能指标)

       this.$http.head(url, [options])

◇headers:那些函数是头音信的getter函数,能够接收二个参数,用来拿到相应名字值

View Code

如上正是本文的全部内容,希望对大家的学习抱有助于,也可望我们多多关照脚本之家。

    3、 安装vue-resource并引入    

var promise=$http.jsonp("/api/users.json?callback=JSON_CALLBACK");

一、 简介

4、响应对象

 

①$http.get('/api/users.json');

      this.$http.patch(url, [body], [options]) 

promise.success(function(data,status,config,headers){
//处理成功的响应
});

promise.error(function(data,status,hedaers,config){
//处理失败后的响应
});

 

$http({
url:'data.json',
method:'GET'
}).success(function(data,header,config,status){
//响应成功

}).error(function(data,header,config,status){
//处理响应失败
});

     2、英特网直接下载axios.min.js文件

◇data:这么些数目意味着调换之后的响应体(借使定义了改变的话卡塔 尔(英语:State of Qatar)

      this.$http.jsonp(url, [options])

以此键的值是三个字符串map或对象,会被转变成查询字符串追加在URubiconL前面。要是值不是字符串,会被JSON类别化。

      3、借使应用模块化开荒,能够运用qs模块举行更改

您也许感兴趣的稿子:

  • AngularJS中$http使用的简短介绍
  • AngularJS通过$http和服务器通讯详明
  • angularJS之$http:与服务器交互示例
  • AngularJS中$http的相互难题
  • 简单介绍AngularJS中$http服务的用法
  • AngularJS使用$http配置对象格局与服务端交互作用形式
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="x-ua-compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>发送AJAX请求</title>
    <script src="js/vue.js"></script>
    <script src="js/axios.js"></script>
    <script src="js/vue-resource.js"></script>
</head>

<body>
<div id="itany">
    <a>{{name}}</a>

    <button v-on:click="send">sendJSONP</button>

</div>
</body>
<script>
    new Vue({
        el: '#itany',
        data:{
            name: 'alice',
            age: 19
                    },
        methods:{
            send:function(){
//                https://sug.so.360.cn/suggest?callback=suggest_so&encodein=utf-8&encodeout=utf-8&format=json&fields=word&word=a
                this.$http.jsonp('https://sug.so.360.cn/suggest',
                    {params:{
                        word:'a'
                    }}
                ).then(resp=> {
                    console.log(resp.data)
                })

            }
        }
    })
</script>
</html>

$http服务是只好选用贰个参数的函数,这么些参数是叁个指标,包罗了用来生成HTTP央求的陈设内容。那些函数再次来到多个promise对象,具有success和error七个措施。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="x-ua-compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>发送AJAX请求</title>
    <script src="js/vue.js"></script>
    <script src="js/axios.js"></script>
    <script src="js/vue-resource.js"></script>
</head>
<body>
<div id="itany">
    <button v-on:click="send">向百度搜索发送JSONP请求</button>
</div>
</body>
<script>
    new Vue({
        el:'#itany',
        data:{
            name:'za'
        },
        methods:{
            send:function () {
                this.$http.jsonp('https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su',
                    {params:{wd:'a'},
                        jsonp:'cb', //百度使用的jsonp参数名为cb,所以需要修改,默认使用的是callbakc参数就不用修改
                    }).then(function (resp) {
                    console.log(resp.data)
                }).catch(function (err) {
                    console.log(err)
                })
            }
        }


    })
</script>
</html>

其一目的中带有了将会被作为新闻体发送给服务器的数据。常常在发送POST诉求时接纳。

       npm info vue-resource           #查看vue-resource 版本音信
          cnpm install vue-resource -S #等同于cnpm install vue-resource -save

①method

    4、 基本使用方式(使用this.$http发送伏乞卡塔 尔(英语:State of Qatar) 

3、快捷的get请求

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>发送AJAX请求</title>
    <script src="js/vue.js"></script>
    <script src="js/axios.min.js"></script>
    <script>
        window.onload=function(){
            new Vue({
                el:'#itany',
                data:{
                    user:{
                        name:'alice',
                        age:19
                    },
                },
                methods:{
                    send(){
                        axios({
                            method:'get',
                            url:'http://www.baidu.com?name=tom&age=23'
                        }).then(function(resp){
                            console.log(resp.data);
                        }).catch(resp => {
                            console.log('请求失败:' resp.status ',' resp.statusText);
                        });
                    },
                    sendGet(){
                        axios.get('server.php',{
                            params:{
                                name:'alice',
                                age:19
                            }
                        })
                        .then(resp => {
                            console.log(resp.data);
                        }).catch(err => {             //
                            console.log('请求失败:' err.status ',' err.statusText);
                        });
                    },
                }
            });
        }
    </script>
</head>
<body>
    <div id="itany">
        <button @click="send">发送AJAX请求</button>

        <button @click="sendGet">GET方式发送AJAX请求</button>

    </div>
</body>
</html>
$http.get('/api/users.json',{ cache: true })
.success(function(data) {})
.error(function(data) {});

    2、传参方式:
                通过url传参
                  通过params选项传参

率先次发送诉求时,$http服务会向/api/users.json发送三个GET须要。第贰遍发送同二个GET央求时,$http服务会从缓存中取回诉求的结果,而不会真正发送叁个HTTP GET伏乞。
在此个例子里,由于设置了启用缓存,AngularJS暗中认可会使用$cacheFactory,那一个服务是AngularJS在运转时自动创立的。

      this.$http.put(url, [body], [options])

$http({
method:'GET',
url:'/api/users.json',
params:{
'username':'tan'
});

  3、发送post需要(push,delete的非get方式的需要都豆蔻梢头致卡塔 尔(英语:State of Qatar)

笔者们能够利用内置的$http服务一向同外界实行通讯。$http服务只是轻便的包裹了浏览器原生的XMLHttpRequest对象。

      4、注释:axios暗中认可发送post数据时,数据格式是Request Payload,并不是我们常用的Form Data格式,所以参数必定要以键值对情势传递,无法以json情势传参

②url:绝没有错要么绝没错央求指标

      1、自个儿拼接为键值对

学习angular,个人推举书籍《AngularJS权威教程》电子PDF版地址如下: //www.jb51.net/books/255696.html

带jionsp参数的

暗中同意情状下,$http服务不会对央求进行本地缓存。在发送单独的号召时,我们得以通过向$http诉求传入一个布尔值可能七个缓存实例来启用缓存。

分分快三计划 23分分快三计划 24

比如说,用如下代码获取X-Auth-ID的值:

    5、案例

    3、案例:

      2、使用transformRequest,在伸手发送前将央浼数据开展退换

     1、npm install axios -S        #直白下载axios组件,下载完成后axios.js就存放在node_modulesaxiosdist中

  4、发送跨域哀告
         1、须知:axios自个儿并不帮助发送跨域的呼吁,未有提供对应的API,作者也暂没布置在axios增多支持发送跨域央浼,所以只能使用第三方库

     3、通过script src的秘籍开展文件的引进

本文由分分快三计划发布,转载请注明来源

关键词: 分分快三计划