首页 > 其他分享 >Vue-与后端交互的三种方式、箭头函数、显示电影小案例

Vue-与后端交互的三种方式、箭头函数、显示电影小案例

时间:2023-09-19 12:35:27浏览次数:37  
标签:Vue name res age data 箭头 ajax 交互

与后端交互的三种方式

前后端需要打通 -----》从前端发送ajax-----》ajax的核心:使用js发送http请求,接收返回

  - 原生js,可以开启ajax,但是原生js开启,比较麻烦,需要做浏览器兼容,有坑(基本不写)

  - jq,写了个兼容所有浏览器的 $.ajax(),不仅仅有ajax,还封装了很多dom操作

    -如果vue中使用它,不合适

  - axios:第三方的ajax包(我们使用这个)

  - fetch:原生js发送ajax请求,有的浏览器也不兼容

 1. 使用jquery发送ajax请求:

会出现的问题:

 解决跨域问题,在请求头中:

views:

 index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.js"></script>
    <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
    <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
    <script src="/js/vue.js"></script>
</head>
<body>
<div id="app">
    <button class="btn btn-success" @click="handleLoad">点我添加数据</button>
    <hr>
    姓名:{{ name }} 年龄:{{ age }}
</div>
</body>
<script>
    let vm = new Vue({
        el: '#app',
        data: {
            name: '',
            age: '',
        },
        methods: {
            handleLoad() {
                 // 请求发送成功,后端执行了,但是被浏览器拦截了,因为有跨域问题
                 // 当前地址,如果向非浏览器地址栏中得地址发送请求,就会出现跨域
                // 定义一个新的变量来接受this,防止在内部函数调用的时候,出现指向错乱的问题
                var _this=this
                // ajax请求方式,jquery的ajax
                $.ajax({
                    // 请求的地址
                    url: 'http://127.0.0.1:8000/user/',
                    // 请求的方式
                    type: 'get',
                    success: function (res) {
                        // res是object类型
                        console.log(typeof res)
                        // 拿到后端的数据
                        _this.name = res.name
                        _this.age = res.age
                    }
                })
            }
        }
    })
</script>
</html>

结果:

 2. 使用fetch

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.js"></script>
    <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
    <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
    <script src="/js/vue.js"></script>
</head>
<body>
<div id="app">
    <button class="btn btn-success" @click="handleLoad">点我添加数据</button>
    <hr>
    姓名:{{ name }} 年龄:{{ age }}
</div>
</body>
<script>
    let vm = new Vue({
        el: '#app',
        data: {
            name: '',
            age: '',
        },
        methods: {
            // 使用js的原生fetch(目前也不用)
            handleLoad() {
                var _this=this
                fetch('http://127.0.0.1:8000/user/').then(function (response) {
                // 将数据转为json类型
                return response.json();
                }).then(function (res) {
                 console.log(res); // 对象类型
                _this.name=res.name
                _this.age=res.age
                })

                // 箭头函数
                // var _this = this
                // fetch('http://127.0.0.1:8000/user/').then(response => response.json()).then(res => _this.name= res.name)
            }
        }
    })
</script>
</html>

结果:

 3. 使用axios

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.js"></script>
    <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
    <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
    <script src="/js/vue.js"></script>
     <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
</head>
<body>
<div id="app">
    <button class="btn btn-success" @click="handleLoad">点我添加数据</button>
    <hr>
    姓名:{{ name }} 年龄:{{ age }}
</div>
</body>
<script>
    let vm = new Vue({
        el: '#app',
        data: {
            name: '',
            age: '',
        },
        methods: {
            handleLoad() {
                //var _this=this
                //axios.get('http://127.0.0.1:8000/user/').then(function (res) {
                    // 数据在data中
                   // console.log(res.data)
                   // _this.name=res.data.name
                    //_this.age=res.data.age
                //})

                // 使用箭头函数
                axios.get('http://127.0.0.1:8000/user/').then(res =>{
                    console.log(res.data)
                    this.name=res.data.name
                    this.age=res.data.age
                })
            }
        }
    })
</script>
</html>

结果:

使用匿名函数:

 使用箭头函数:

 箭头函数

箭头函数是es6的语法:

  -1. 函数写法变简单

  - 2. 箭头函数没有自己的this,在箭头函数中使用this,就是它的上一层的this(不需要新定义一个变量来接受this)

1. 无参数,无返回值

2. 有一个参数,没返回值,括号可以省略

结果:

 3. 多个参数,不能省略括号

结果:

4. 多个参数,一个返回值,不能省略括号

结果:

5. 一个参数,一个返回值

结果:

 显示电影小案例

 

标签:Vue,name,res,age,data,箭头,ajax,交互
From: https://www.cnblogs.com/Lucky-Hua/p/17713991.html

相关文章

  • 腾讯Fast-Causal-Inference已经在GitHub中公布,采用SQL交互
          腾讯近日宣布旗下的开源分布式数据科学组件项目Fast-Causal-Inference已经在GitHub中公布。根据公开资料显示,这是由腾讯微信研发,采用SQL交互的,基于分布式向量化的统计分析、因果推断计算库,宣称“解决已有统计模型库(R/Python)在大数据下的性能瓶颈,提供百亿......
  • 12-Vue核心-绑定样式
    class与style绑定1)在应用界面中,某个(些)元素的样式是变化的2)class/style绑定就是专门用来实现动态样式效果的技术class绑定样式写法:v-bind:class ="xxx"或:class="xxx",xxx可以是字符串、对象、数组1)字符串写法适用于:只绑定一个样式,类名不确定,需要动态获取2)数......
  • Vue收集表单数据
    收集表单数据v-model的使用data:{ account:'',//用户输入 password:'', age:'', sex:'',//需要配置 hobby:[], agree:''}若,则v-model收集的是value值,用户输入的就是value值。若,则v-model收集的是value值,需要配置value值。性别:男<inputtype=&qu......
  • 如何在vuejs项目中使用md5加密密码的实现
    1、NPM安装:npminstall--savejs-md52、全局用法2.1、全局引用importmd5from'js-md5';Vue.prototype.$md5=md5;2.2、全局使用将您需要加密的信息放进去:this.$md5('Thisisencryptedcontent')//6f43dd5db792acb25d6fe32f3dddac703.局部用法在页面中单独使用......
  • vue前端图片上传并显示
    今天完成了vue前端对数据库中图片的显示,并可以对上传的图片添加到数据库中添加修改  数据库信息 ......
  • vue的目录结构和简单的开发流程(只有最简单的一部分)
    通过将Vue挂载到app上,然后再放到div上面 ......
  • Vue-js循环方式、v-model的使用、事件处理、表单控制、购物车案例
    js循环方式在es6语法中:(以后尽量少用var有很多坑)-let:定义变量-const:定义常量1.方式一:for循环,基于索引的循环<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><scriptsrc=".......
  • Vue之js循环方式、v-model 的使用、事件处理、表单控制、购物车案例、v-model修饰符
    js循环方式<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>js循环方式</title><scriptsrc="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.js"></sc......
  • vue-dayu03
    js循环方式一:基于索引的循环<script>leti=0for(;i<10;){console.log(i)i++}letgood_list=[1,2,3]for(letj=0;j<good_list.length;j++){console.log(good_list[j])}</script>方式二:in循环  基于迭代的循环,依赖于索引取......
  • vue2项目创建
    vue2项目基本安装vuecreare项目名cd项目名code.按照其它模块element-uinpmielement-ui-S在main.js中写入以下内容:importVuefrom'vue'importAppfrom'./App.vue'importElementUIfrom'element-ui';Vue.config.productionTip=falseim......