7.Vue之vue-resource(ajax,jsonp)

介绍

在vue中利用它可以向api发出ajax请求来操作数据

正文

$http 属性上的三个方法 api的文档 / vueresource的下载地址

1.get
 请求  this.$http.get(url)
 响应 .then(function(res){})  中的res就是响应报文对象

2. post
他与get和jsonp请求不同的是,第二个参数是一个请求报文对象,写法 {key:value}
第三个参数一定要带上{emulateJSON:true} ,作用是:{emulateJSON:true} 的本质是在请求报文头上增加了 Content-Type:application/x-www-form-urlencode,只有加入了这个头,在服务器中才可以获取到第二个参数对象中的属性值

3. jsonp
jsonp原理是什么:   jsonp已经不是一个ajax请求了,采取的是浏览器的同源策略来实现跨域的,在请求的时候会在url后带上callback=生成的 函数名称一起提交给服务器,在服务器中利用callback传入的值当做一个方法来将要响应回去的数据当做参数传入
如何判断一个api是否支持jsonp请求?   只需要查看响应报文体中的数据是类似于   XXXX('数据') 这种格式就表示支持jsonp
请求的特点 : 1、是一个同源请求,反映在调试器上 script类型  2、请求url后面一定是有callback参数
响应 .then(function(res){})  中的res就是响应报文对象
<body>
    <div id="app">
    <button @click="getdata">jsonp的ajax请求</button>
        
        <div>{{ res }}</div>
    </div>

    <script>
    new Vue({
        el:'#app',      
        data:{
            res:''
        },
        methods:{
            getdata:function(){
                //发出jsonp的请求
                //定义一个url:这个url所对应的处理是支持jsonp格式的响应的
                var url = 'http://vuecms.ittun.com/api/jsonp' ;
                this.$http.jsonp(url).then(function(response){
                    var body = response.body;--{"message":"jsonp请求ok"}
                    var obj = JSON.parse(body); -----------obj是对象
                    this.res = obj.message;---------------jsonp请求ok

                });
            }
        }
    });
    </script>
</body>
</html>
     
    <script>    

    //定义一个 v-focus的属性自定义指令
    Vue.directive('focus',function(){
        this.el.focus(); //实现文本框的自动获取焦点
    });

    //定义一个带有参数的自定义指令
    Vue.directive('color',{
        params:['colorName'],
        bind:function(){
            //1.0 获取到colorname的值
            var cname = this.params.colorName;

            //2.0 获取到el以后给其赋予一个样式
            this.el.style.color = cname;
        }
    });

    new Vue({
        el:'#app',
        //在当前data和methods创建完成以后的钩子函数中触发ajax请求即可
        created:function(){
            this.getlist();
        },
        filters:{
            datefmt:function(input,fmtstr,str){
                var date = new Date(input); 
                var year = date.getFullYear();
                var m = date.getMonth() + 1;
                var d = date.getDate();
                var h = date.getHours();
                var mi = date.getMinutes();
                var se = date.getSeconds();

                if(fmtstr =='yyyy-mm-dd')
                {
                    //输出: yyyy-mm-dd
                    return year+'-'+m +'-'+d;
                }else if(fmtstr =='hh:mm:ss'){
                    return h+':'+mi +':'+se;
                }

                }
        },
        data:{
            list:[
                
            ],
            productid:0,
            productname:'',
            searchValue:'' //代表搜索文本框中的内容,通过v-model就能够自动同步到视图中的数据
        },
        methods:{
            //1.0 删除
            del:function(id){
                //向http://vuecms.ittun.com/api/delproduct/:id发送ajax 的get请求
                //1.0 定义url
                var url = 'http://vuecms.ittun.com/api/delproduct/'+id;

                //2.0 发出请求
                this.$http.get(url).then(function(res){                 
                    alert(res.body.message);                
                });

                //3.0 刷新页面
                this.getlist();

            },
            del2:function(index){
                this.list.splice(index,1);  
            },

            // 2.0 添加
            addProduct:function(e){
                //通过ajax的post请求来增加数据
                //1.0 确定url
                var url = 'http://vuecms.ittun.com/api/addproduct'
                //2.0 post(url,请求报文体的数据,{emulateJSON:true}).then()
                
                this.$http.post(url,{name:this.productname},{emulateJSON:true}).then(function(res){
                        // alert(res.body.message);
                });

                //3.0 重新获取列表数据
                this.getlist();
            },
            //3.0 从服务器获取到品牌数据
            getlist:function(){
                this.$http.get('http://vuecms.ittun.com/api/getprodlist')
                .then(function(res){
                    if(res.body.status!==0){
                        alert(res.body.message);
                        return;
                    }

                    //正常处理
                    this.list = res.body.message;
                });
            }
        }
    });
    </script>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 210,914评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 89,935评论 2 383
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,531评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,309评论 1 282
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,381评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,730评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,882评论 3 404
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,643评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,095评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,448评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,566评论 1 339
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,253评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,829评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,715评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,945评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,248评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,440评论 2 348

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,628评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,732评论 25 707
  • 2017年7月22日 星期六 晴 烈日炎炎的夏日,酷暑难耐,约几好友来到浏阳大围山的...
    罗木禾阅读 2,577评论 2 4
  • 文/盒子书生 一、当我在键盘上依旧打着“2014年X月X日”的时候,周周童鞋已经携手他的21岁新娘在英国大婚。 二...
    盒子书生阅读 244评论 0 3
  • 都是我编的 1. 当我把AVO的渴望红肉放进篮子里时,突然想起该带太上皇去宠物医院做体内驱虫了。 所谓太上皇,可不...
    正经猫阅读 3,549评论 1 8