Vue前后台交互

一直在文档什么的看到的都是静态页面的制作,终于搞明白怎么做交互了。

1. 引入vue.js, vue-resource.js;

2.这就可以开始交互了。

注意:一定要运行在服务器里面,否则输出的是php代码,而非返回值。

有三种交互方式:get、post、jsonp

get:会将请求的参数附在最后

post:不会显示在url中

get、post用来请求某个php文件的参数。

jsonp:JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。其核心思想是利用JS标签里面的跨域特性进行跨域数据访问,在JS标签里面存在的是一个跨域的URL,实际执行的时候通过这个URL获得一段字符串,这段返回的字符串必须是一个合法的JS调用,通过EVAL这个字符串来完成对获得的数据的处理。

定义a.txt

内容是:Hello world!

1)get:

php接口:

<?php
$a=$_GET['a'];
$b=$_GET['b'];
echo $a+$b;
?>

vue:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Ajax-get</title>
    <script src="vue.js"></script>
    <script src="vue-resource.js"></script>
</head>
<body>
    <div id="app">
        a= <input type="text" id="t1" v-model="t1">
        b= <input type="text" id="t2" v-model="t2">
        a+b=<span class="a">{{msg}}</span>
        <input type="button" value="submit" @click="get()">
    </div>

    <script>
        new Vue({
            el:'body',
            data:{
                t1:'',
                t2:'',
                msg:''
            },
            methods:{
                get:function(){
                    this.$http.get('get.php',{
                         a:this.t1,
                         b:this.t2
                    }).then(function(res){
                       this.msg=res.data;
                    },function(res){
                        alert(res.status);
                    });
                }
            }
        });
    </script>
</body>
</html>


2)  post:

php接口:

<?php
$a=$_POST['a'];
$b=$_POST['b'];
echo $a-$b;
?>

vue:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Ajax-post</title>
    <script src="vue.js"></script>
    <script src="vue-resource.js"></script>
</head>
<body>
<div id="app">
    a= <input type="text" id="t1" v-model="t1">
    b=<input type="text" id="t2" v-model="t2">
    a-b=<span class="a">{{msg}}</span>
    <input type="button" value="submit" @click="post()">
</div>

<script>
    new Vue({
        el:'body',
        data:{
            t1:'',
            t2:'',
            msg:''
        },
        methods:{
            post:function(){
                this.$http.post('post.php',{
                    a:this.t1,
                    b:this.t2
                },{
                    emulateJSON:true
                }).then(function(res){
                    this.msg=res.data;
                },function(res){
                    alert(res.status);
                });
            }
        }
    });
</script>
</body>
</html>


3)  JOSNP:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Ajax</title>
    <script src="vue.js"></script>
    <script src="vue-resource.js"></script>
</head>
<body>
    <div id="app">
        <input type="text" id="t1" v-model="t1">
        <p class="a">{{msg1}}</p>
        <input type="button" value="submit" @click="get()">
    </div>
    <script>
        new Vue ({
            el:'#app',
            data:{
                t1:'',
                msg1:''
            },
            methods:{
                get:function(){
                    this.$http.jsonp('https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su',{
                        wd:this.t1
                    },{
                        jsonp:'cb'	//callback名字,默认名字就是"callback"
                    }).then(function(res){
                       this.msg1=res.data.s;
                    },function(res){
                        alert(res.status);
                    });
                }
            }
        });

    </script>
</body>
</html>

最传统的写法:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Ajax</title>
    <script src="vue.js"></script>
    <script src="vue-resource.js"></script>
</head>
<body>
<div id="app">
    <input type="text" id="t1" v-model="t1">
    <p class="a">{{msg1}}</p>
    <input type="button" value="submit" @click="get()">
</div>
<script>
    new Vue ({
        el:'#app',
        data:{
            t1:'a',
            msg1:'b'
        },
        methods:{
            get:function(){
                this.$http({
                    url:'post.php'
                    data:给后台提交数据,
                    method:'get'//也可以是/post/jsonp
                    //如果是jsonp,那么还要加一行:jsonp:'cb' //cbName
                }).then(function(res){
                    this.msg1=res.data.s;
                },function(res){
                    alert(res.status);
                });
            }
        }
    });

</script>
</body>
</html>


  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值