美文网首页
vue笔记-08(vue-resource发起get,post,

vue笔记-08(vue-resource发起get,post,

作者: 7ColorLotus | 来源:发表于2020-05-09 23:13 被阅读0次
    • vue-resource是vue中可以替换jquery中的ajax请求功能的库
    • 除了vue-resource,还可以使用axios的第三方包实现数据的请求,vue2.0版本推荐使用axios
    • 在vue包后面导入vue-resource,vue-resource依赖于vue,下载vue-resource包:https://cdn.staticfile.org/vue-resource/1.5.1/vue-resource.min.js
    • 使用get请求:
      • this.$http.get(url,[options]).then(successCallback,errorCallback)
      • 使用result.body获得请求成功的数据
    • 使用Post请求:
      • this.$http.get(url,[body],[options]).then(successCallback,errorCallback)
      • 手动发起的POST请求,默认没有表单格式,所以,有的服务器处理不了,可以通过post方法的第三个参数{emulateJSON:true}设置提交的内容类型为普通表单数据格式
      • 使用result.body获得请求成功的数据
    • 使用JSONP请求
      • this.$http.jsonp(url, [options]).then(successCallback, errorCallback)
      • 使用result.body获得请求成功的数据
    • JSONP的实现原理
      • 由于浏览器的安全性限制,不允许AJAX访问协议不同,域名不同,端口号不同的数据接口,浏览器认为这种访问不安全
      • 可以通过动态创建script标签的形式,把script标签的src属性,指向数据接口的地址,因为script标签不存在跨域限制,这种数据获取方式,称作JSONP(注意:根据JSONP的实现原理,知晓JSONP只支持GET请求)
      • 具体实现过程:
        1)先在客户端定义一个回调方法,预定义对数据的操作
        2)再把这个回调方法的名称通过URL传参的心事,提交到服务器的数据接口
        3)服务器数据接口阻止好要发送给客户端的数据,再拿着客户端传递过来的回调方法名称,拼接出一个调用这个方法的字符串,发送给客户端去解析执行
        4)客户端拿到服务器返回的字符串之后,当作script脚本去解析执行,这样就能够拿到JSONP的数据了
    • 代码演示
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>vue-resource演示</title>
        <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
        <script src="https://cdn.staticfile.org/vue-resource/1.5.1/vue-resource.min.js"></script>
    </head>
    <body>
        <div id="app">
            <div>
                <input type="button" value="get" @click="get()">
                <input type="button" value="post" @click="post()">
                <input type="button" value="jsonp" @click="jsonp()">
            </div>
            <div>
                {{ content }}
            </div>
        </div>
        <script>
            //用于jsonp请求回调的函数
            function jsonpCall(){
                console.log("jsonp Call success")
            }
    
    
            var vm = new Vue({
                el: "#app",
                data: {
                    content:''
                },
                methods:{
                    get(){ //如果是静态文件直接运行,需要处理跨域问题
                        var url = "http://localhost:10439/say_hi"
                        this.$http.get(url, function(result){
                            this.content = result.body
                        },function(res){
                            console.log("请求失败")
                        })
                    },
    
                    post(){ //如果是静态文件直接运行,需要处理跨域问题
                        var url = "http://localhost:10439/say_hi_post"
                        var param = {data : 'test'}
                        this.$http.post(url, param , function(result){
                            this.content = result.body
                        },function(res){
                            console.log("请求失败")
                        })
                    },
    
                    jsonp(){ //前端处理跨域请求的一种方式,只有get请求
                        var url = "http://localhost:10439/jsonp_call"
                            this.$http.jsonp(url, function(result){
                            this.content = result.body
                        })
                    }
                }
            })
        </script>
    </body>
    </html>
    

    相关文章

      网友评论

          本文标题:vue笔记-08(vue-resource发起get,post,

          本文链接:https://www.haomeiwen.com/subject/upsrnhtx.html