首页 > 其他分享 >vue之三种与后端交互的方式

vue之三种与后端交互的方式

时间:2023-06-05 22:23:39浏览次数:43  
标签:__ vue name res age data 三种 交互 app

目录

一、vue与后端交互之Ajax

情况一:出现了跨域问题

前端:index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script src="https://code.jquery.com/jquery-3.7.0.min.js"></script>
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <title>Title</title>
  <script src="./vue/vue.js"></script>
</head>
<body>
<div id="app">
    <button @click="handleLoad">点我加载数据</button>
    <hr>
    您的名字是:{{name}},您的年龄是:{{age}}
</div>
</body>
<script>
    var vm = new Vue({
        el:'#app',
        data:{
            name:'',
            age:'',
        },
        methods:{
            handleLoad(){
                $.ajax({
                    url:'http://127.0.0.1:5000',
                    type:'get',
                    success: data =>{
                        var res = JSON.parse(data)
                        this.name = res.name
                        this.age = res.age
                    }
                })
            }
        }
    })
</script>
</html>

后端:main.py

from flask import Flask,jsonify

app = Flask(__name__)

@app.route('/')
def index():
    print('来了')
    res = jsonify({'name':'yzk','age':19})
    return res


if __name__ == '__main__':
    app.run()

image
img

这里可以看出:前端向后端成功发送了请求,后端也成功响应了,但是前端却报错了

这是因为:跨域问题的存在,浏览器检测到前端和后端不是来自同一个,所以认为这是不安全的,所以就拦截了该资源的传递

想要解决这个问题,就要实现:CORS,也就是 跨域资源共享

情况二: 解决了跨域问题

前端:index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script src="https://code.jquery.com/jquery-3.7.0.min.js"></script>
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <title>Title</title>
  <script src="./vue/vue.js"></script>
</head>
<body>
<div id="app">
    <button @click="handleLoad">点我加载数据</button>
    <hr>
    您的名字是:{{name}},您的年龄是:{{age}}
</div>
</body>
<script>
    var vm = new Vue({
        el:'#app',
        data:{
            name:'',
            age:'',
        },
        methods:{
            handleLoad(){
                $.ajax({
                    url:'http://127.0.0.1:5000',
                    type:'get',
                    success: data =>{
                        console.log(typeof data)
                        console.log(data)
                        // var res = JSON.parse(data)
                        this.name = data.name
                        this.age = data.age
                    }
                })
            }
        }
    })
</script>
</html>

后端:main.py


from flask import Flask,jsonify

app = Flask(__name__)

@app.route('/')
def index():
    print('来了')
    res = jsonify({'name':'yzk','age':19})
    res.headers['Access-Control-Allow-Origin'] = '*'  # 访问控制允许的源 设置为全部
    return res


if __name__ == '__main__':
    app.run()

image
img

二、vue与后端交互之fetch

简介

fetch介绍

提供了一个 JavaScript 接口,用于访问和操纵 HTTP 管道的一些具体部分,例如请求和响应

它还提供了一个全局 fetch() 方法,该方法提供了一种简单,合理的方式来跨网络异步获取资源

后端:main.py


from flask import Flask,jsonify

app = Flask(__name__)

@app.route('/')
def index():
    print('来了')
    res = jsonify({'name':'yzk','age':19})
    res.headers['Access-Control-Allow-Origin'] = '*'  # 访问控制允许的源 设置为全部
    return res


if __name__ == '__main__':
    app.run()

前端:index.html

  handleLoad() {
                // 2 使用js原生的fetch(目前也不用)
                // fetch('http://127.0.0.1:5000').then(function (response) {
                //     // console.log(response)
                //     return response.json();
                // }).then(function (res) {
                //     console.log(res);
                // });
                // 了解,箭头函数一会讲
                fetch('http://127.0.0.1:5000').then(response=>response.json()).then(res=>{
                    console.log(res)
                    this.name = res.name
                    this.age = res.age
                })

            }

image
img

三、vue与后端交互之axios

1.简介

① Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中
② axios官网:http://www.axios-js.com/

html前端

           // 方式三,使用axios  ,以后都用它
            handleLoad() {
                // var _this = this
                // axios.get('http://127.0.0.1:5000').then(function (res) {
                //     console.log(res.data)
                //     _this.name = res.data.name
                //     _this.age = res.data.age
                //
                // })
                axios.get('http://127.0.0.1:5000').then(res => {
                    console.log(res.data)
                    this.name = res.data.name
                    this.age = res.data.age

                })

            }

image

标签:__,vue,name,res,age,data,三种,交互,app
From: https://www.cnblogs.com/yuezongke/p/17459078.html

相关文章

  • Vuex的五个属性及使用方法示例
    一、Vuex简介Vuex是Vue.js的状态管理库,它通过中心化的状态管理使得组件间的数据共享更加容易。Vuex包含五个核心属性:state、getters、mutations、actions和modules。Vuex是Vue.js的状态管理库,它提供了一种集中式存储管理应用程序中所有组件的状态,并将其分离到一个可预测的状态容器......
  • vue3+vant4+vuex4入门案例
    案例用的是vant-ui库,你可换成你自己用的ui库即可。安装vuex依赖包npminstallvuex--savemain.js引用vuex,并挂载到vue中importstorefrom'./store';app.use(router).use(store); add.vue页面:1<template>2<h2>加法{{$store.getters.showNum}}</h2......
  • Vue购物车展示功能
    1.基本购物车<body><divid="app"><divclass="container-fluid"><divclass="row"><divclass="col-md-6col-md-offset-3"><h1class="text-cent......
  • Vue基础之表单控制 ,v-model进阶,箭头函数,JS循环
    目录一、表单控制1.checkbox选中2.radio单选3、checkbox多选4.购物车案例-结算二、v-model进阶三、箭头函数es6的语法1无参数,无返回值2有一个参数,没有返回值,可以省略括号3多个参数,不能省略括号4多个参数,不能省略括号,一个返回值5一个参数,一个返回值四、补充:JS循环一、表......
  • vue3+vant4+vuex4实现todolist备忘录案例
    案例图片如下:  1<van-cell-group>2<van-cell>3<van-row>4<van-colspan="20">5<van-field6:value="content"7@change="handl......
  • 初识vue3——第一天
    api查询地址api请查阅vue3全部API初始化实例每个Vue应用都是通过createApp函数创建一个新的应用实例://index.html<divid="app"></div><scripttype="module"src="/src/main.js"></script>//main.jsimport{createApp}from'vu......
  • Vue——表单控制、购物车案例、v-model进阶、与后端交互三种方式、箭头函数
    表单控制//1checkbox 单选 多选//2radio 单选<body><divid="app"><h1>checkbox单选</h1><p>用户名:<inputtype="text"v-model="username"></p><p>密码:<inputtype="p......
  • 表单控制,购物车案例,v-model进阶,与后端交互的三种方式
    1表单控制#1checkebox: -单选-多选#2radio -单选<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><scriptsrc="./js/vue.js"></scrip......
  • Vue3 setup语法糖下的axios全局设置教程
    Vue3setup语法糖下的axios全局设置教程前言在Vue3的组件式API开发下,this关键词不再适用,网上很多配置axios教程都是以Vue2为基础的,在Vue3下不再适用。近期尝试用组件式API风格写项目,在配置全局axios就遇到了这个问题。经过我反复尝试,查阅官网的文档,终于有了以下解决方法:Vue2......
  • vue3学前准备
    vue3学前准备学习vue3的原因Vue3是一个面向未来的框架:Vue3相比Vue2有更好的性能和更好的扩展性,将来会成为前端开发的主流。改进的响应式系统:Vue3采用了Proxy对象来实现响应式系统,使得性能更高、内存消耗更小、支持动态添加属性等。同时,在Vue3中,开发者也可以更容易地......