get,post,jsonp数据交互—百度下拉列表

三种数据交互形式:get  post jsonp

一、get请求

1.引入 vue.js 和 vue-resource.js , 准备一个按钮

<input type="button" value="按钮" @click="get()"/>     //点击按钮请求数据函数get()

2.准备一个txt文件

welcome vue

3.编写js代码

<script>
    window.onload=function(){
      new Vue({
        el:'body',                      //主体为body,有套div时,此处为选择器
        methods:{
          get:function(){
            this.$http.get('a.txt').then(function(res){
              alert(res.data)       //成功后,弹出请求数据
            },function(res){                                   
              alert(res.status)      //失败后,弹出请求状态码
            })
          }
        }
      })
    }
  </script>

二、post请求

1.引入 vue.js 和 vue-resource.js , 准备一个按钮

<input type="button" value="按钮" @click="get()"/>

2.准备一个php文件

<?php
  $a=$_POST['a'];
  $b=$_POST['b'];
  echo $a-$b;          //回显数据相减结果
?>

3.编写js代码

<script>
    window.onload=function(){
      new Vue({
        el:'body',
        methods:{
          get:function(){
            this.$http.post('post.php',{        //发送实参数据,进行运算(需要放在服务器环境)
              a:1,
              b:2
            },{
              emulateJSON:true                //post的标识
            }).then(function(res){
              alert(res.data)          //成功后弹出数据结果
            },function(res){    
              alert(res.status)         //失败后弹出状态码
            })
          }
        }
      })
    }
  </script>

三、jsonp——百度下拉列表实例

1.引入 vue.js 和 vue-resource.js , 准备基础样式代码

 1 <style>
 2     .gray{
 3       background: #ccc;              //按上下键时显示的文字背景颜色
 4     }
 5   </style>
 6 
 7 <div id="box">
 8     <input type="text" v-model="t1" @keyup="get($event)" @keydown.down="changeDown()" @keydown.up.prevent="changeUp()"/>
        //按键传键值 get($event) 函数 //按向下键时 changeDown() 函数 //按向上键时 changeUp() 函数:阻止默认行为输入浮上移 9 <ul> 10 <li v-for="value in myData" :class="{gray:$index==now}">{{value}}</li>
        //循环myData数据 绑定样式同时添加条件,下标值此时为几时,背景为灰 11 </ul> 12 <p v-show="myData.length==0">暂无数据...</p> //当数据长度为0时,显示暂无数据... 13 </div>

2、编写js代码

 1 <script>
 2     window.onload=function(){
 3       new Vue({
 4         el:'#box',
 5         data:{
 6           myData:[],
 7           t1:'',
 8           now:-1
 9         },
10         methods:{
11           get:function(ev){                                      //接收事件
12             if(ev.keyCode==38||ev.keyCode==40)return;          //如果事件为向上向下则return不请求数据
13             if(ev.keyCode==13){                        //如果事件为回车
14               window.open('https://www.baidu.com/s?wd='+this.t1);    //则打开百度对应t1值页面
15               this.t1='';                            //清空输入框
16             }
17             this.$http.jsonp('https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su',{
18               wd:this.t1                             //截取的搜索接口,发送数据为输入框此时输入的数据
19             },{
20               jsonp:'cb'                             //callback名字,默认为'callback'
21             }).then(function(res){
22               this.myData=res.data.s                    //将数据的s值赋给 myData
23             },function(res){
24               alert(res.status)
25             })
26           },
27           changeDown:function(){                       //按下键时的函数
28             this.now++;                            //now下标值++
29             if(this.now==this.myData.length)this.now=-1;        //如果下标值为数据长度,即最后一个时,为-1,跳到第一个
30             this.t1=this.myData[this.now]                 //输入框值为此时数据中选中的值
31           },
32           changeUp:function(){                        //按上键时的函数
33             this.now--;                            //now下标值--
34             if(this.now==-2)this.now=this.myData.length-1       //如果下标值为-2,此时now=总长度-1,跳到最后一个
35             this.t1=this.myData[this.now]                 //输入框值为此时数据中选中的值 
36           }
37         }
38       })
39     }
40   </script>

3、类似百度搜索了。。。

posted @ 2017-08-21 17:26  超级玛贝  阅读(646)  评论(0编辑  收藏  举报