Vue Ajax请求

本文介绍了在Vue应用中通过三种不同的方式与后端进行Ajax请求:jQuery的ajax、原生fetch API以及axios库。每个方案都提供了后端视图函数的实现,并展示了前端如何发送GET请求并更新UI展示返回的数据。文章强调了跨域请求时添加'Access-Control-Allow-Origin'头的重要性。
摘要由CSDN通过智能技术生成

1. 发送ajax请求的方式

  • 方案一:jq 的ajax(在 vue 中不推荐同时使用)
  • 方案二:js 原始官方 fetch方法
  • 方案三:axios 第三方

2. 方案一

  • 后端视图函数
from rest_framework.viewsets import ViewSet
from rest_framework.response import Response


class Index(ViewSet):
    def index(self, request):
        res = Response({'name': 'xwx', 'age': 123})
        res['Access-Control-Allow-Origin'] = '*'
        return res

需要注意的是,需要添加 Access-Control-Allow-Origin 在请求头

  • 后端路由
from django.contrib import admin
from django.urls import path
from app01 import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/', views.Index.as_view({'get': 'index'})),
]
  • 前端发送 Ajax
<div id="app">
    <p><button @click="func">点我向后端发请求,获取用户信息</button></p>
    <p>用户名:{{ name }}</p>
    <p>年龄是:{{ age }}</p>
</div>

<script>
    new Vue({
        el: '#app',
        data: {
            name: '',
            age: '',
        },
        methods: {
            func() {
                $.ajax({
                    'url': 'http://127.0.0.1:8000/index/',
                    'type': 'get',
                    success: data => {
                        console.log(data)
                        this.name = data.name
                        this.age = data.age
                    }
                })
            }
        },
    })
</script>

在这里插入图片描述

3. 方案二

  • 前端发送Ajax请求
<div id="app">
    <p>
        <button @click="func">点我向后端发请求,获取用户信息</button>
    </p>
    <p>用户名:{{ name }}</p>
    <p>年龄是:{{ age }}</p>
</div>

<script>
    new Vue({
        el: '#app',
        data: {
            name: '',
            age: '',
        },
        methods: {
            func() {
                fetch('http://127.0.0.1:8000/index/').then(res => res.json()).then(res => {
                    console.log(res)
                    this.name = res.name
                    this.age = res.age
                })
            },
        }
    })
</script>

4. 方案四

  • 前端发送Ajax请求
<div id="app">
    <p>
        <button @click="func">点我向后端发请求,获取用户信息</button>
    </p>
    <p>用户名:{{ name }}</p>
    <p>年龄是:{{ age }}</p>
</div>

<script>
    new Vue({
        el: '#app',
        data: {
            name: '',
            age: '',
        },
        methods: {
            func() {
                axios.get('http://127.0.0.1:8000/index/').then(res => {
                    console.log(res.data)
                    this.name = res.data.name
                    this.age = res.data.age
                })
            },
        }
    })
</script>
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值