2-2 用axios发送HTTP请求-发送JSONP请求


目录:

  •  Vue-resource介绍
  • 基本用法
  • 用vue-resource发送jsonp请求

一、Vue-resource介绍

使用Vue-resource发送跨域请求,安装vue-resource并引入

cnpm install vue-resource -S

或者自己手动下载vue-resource.min.js

Vue-resouce其实跟axios是一样的,但是官方建议使用axios,但是大部分公司还在用vue-resouce,因为axios不支持 jsonp跨域请求,但是vue-resource支持的。

我们查看一下 vue-resource的github的官方地址:Github官方地址(这个里面有很详细的vue-resource的使用方法),也可以在  百度文本框: GitHub vue-resource。

如图:

 

二、基本用法

使用this.$http发送请求

this.$http.get(url, [config])
this.$http.head(url, [config])
this.$http.delete(url, [config])
this.$http.jsonp(url, [config])
this.$http.post(url, [body], [config])
this.$http.put(url, [body], [config])
this.$http.patch(url, [body], [config])

详细使用方法,请查看官网:vue-ressource官方使用文档

三、用vue-resource发送jsonp请求

2.1、语法

说明:当你引入vue-resource是,则vue实例对象中$http,其实这个$http就是指的是vue-resource

this.$http.jsonp("跨域请求的URL",{
    params:{
        word:'shuaigaogao',  //请求参数
    }
}).then(resp => {
    console.log(resp.body.s);    //请求成功
}).catch(err => {
    console.log(err );  //请求失败
}).then(function() {
    console.log("不管怎么样都要执行");   //相当于 finally
});

2.2、模拟360搜索关键字

说明:这个是通过抓包的方式获取360搜索接口

<body>
    <div id="box">
        <button @click="sendJsonp">发送jsonp请求</button>
    </div>

    <script type="text/javascript" src="../vue.js"></script>
    <!--引入vue-resource-->
    <script src="https://cdn.jsdelivr.net/npm/vue-resource@1.5.1"></script>
    <script>
        new Vue({
            el:"#box",
            methods:{
                sendJsonp(){
                    this.$http.jsonp("https://sug.so.360.cn/suggest",{  //请求360搜索接口,是通过抓包获取的
                        params:{
                            word:'huawei',
                        }
                    }).then(resp => {  //请求成功
                        console.log(resp.body.s);
                    })
                }
            }
        })
    </script>
</body>

输出结果,如下:

2.3、模拟百度搜索服关键字

jsonp: 'cb'  =>  修改jsonp的参数名称,把callback改为cb。

<body>
    <div id="box">
        <button @click="sendJsonp">发送jsonp请求</button>
    </div>

    <script type="text/javascript" src="../vue.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/vue-resource@1.5.1"></script>
    <script>
        new Vue({
            el:"#box",
            methods:{
                sendJsonp(){
                    this.$http.jsonp("https://sp0.baidu.com/5b1ZeDe5KgQFm2e88IuM_a",{
                        params:{
                            wd:'huawei',
                        },
                        jsonp: 'cb'  //百度使用时jsonp参数名改为cb,所以需要修改
                    }).then(resp => {
                        console.log(resp);
                    });
                }
            }
        })
    </script>
</body>

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM