axios插件:完成前后台ajax交互

axios插件

使用方法:

1)安装:在前端项目根目录下的终端

cnpm install axios

2)项目配置:main.js

import axios from 'axios'  // 导入axios插件
Vue.prototype.$axios = axios;  // 将axios添加到Vue类属性中,类似单例,可以在后面其他组件中使用

3)在任何一个组件的逻辑中,都可访问this.$axios()

beforeMount() {
    // 请求后台
    this.$axios({
        url: this.$settings.base_url + '/test/',
        method: 'delete',
    })
}

同源策略-跨域问题

一、django默认是同源策略,所以前后台分离项目,访问django会出现CORS跨域问题的报错

二、什么叫跨域
i)ip不同:前后台(两个服务器)不在一台主机上运行的
ii)port不同:前后台(两个服务器)是相互独立的,运行在不同的端口之上
iii)协议不同:http与https之间也同样是跨域问题
注:三者满足一个,就是跨域

三、解决跨域
i)伪装:将前台请求伪装成后台自己对自己发生的请求
ii)后台主动允许跨域:后台配置允许跨域即可(在响应头中处理)

四、Django解决跨域

i)安装模块:

pip install django-cors-headers

ii)注册app:

# settings.py

INSTALLED_APPS = [
    ...
    'corsheaders'
]

iii)添加中间件

# settings.py

MIDDLEWARE = [
    ...
    'corsheaders.middleware.CorsMiddleware'
]

iv)允许跨域源

# settings.py

CORS_ORIGIN_ALLOW_ALL = True

前后台分离项目交互流程

1)启动前后台项目

2)前台配置页面路由,渲染前台页面 | 后台配置数据路由,响应数据(处理好跨域问题)

3)前台通过ajax请求后台接口

  • 将前台数据提交给后台
  • 得到后台的响应结果
  • 根据响应结果的数据,最后完成页面的局部刷新、整体刷新、页面跳转

异步请求细节

1)vue框架用axios完成ajax异步请求

语法:

beforeMount() {
    // 请求后台
    this.$axios().then().catch();
}

// $axios()是请求逻辑 | then()是正常响应逻辑 | catch()是错误响应逻辑

具体语法:

    this.$axios({
        url: '后台接口链接',
        method: '请求方式',
        params: {},  // url拼接参数
        data: {},  // 数据包参数
        headers: {}  // 请求头参数
    }).then(response => {
        // response是http状态2xx的响应结果,响应数据是response.data
    }).catch(error => {
        // error是http状态4xx、5xx的响应结果,错误响应对象是error.response,错误响应数据是error.response.data
    })

// 语法注意事项:
// this.$axios({}).then(response => {}).catch(error => {}) 中的then和catch回调函数,不能写function,因为实际vue项目开发,一定会在回调逻辑用到this语法(代表vue对象),而在function中使用了this语法,function就不是普通函数了(可以理解为类,this就不能代表vue对象了)

2)前台提交数据的两种方式

i)url拼接参数:
    所有请求都拥有的提交数据的方式
    该方式会将数据都在请求url后用?拼接的方式提交给后台
    提交数据只能采用url字符串方式提交给后台,数据是不安全的
    axios插件可以用params属性携带url拼接参数

ii)数据包参数:
    除get请求外的所有请求都拥有的提交数据的方式
    该方式会将数据进行加密,打包成数据包方式提交给后台
    打包加密数据有三种方式:urlencoded(form默认的方式)、form-data(可以提交文件)、json(提交json数据)
    axios插件可以用data属性携带数据包参数

注意项:
原生django没有提供所有类型的数据包数据解析规则,但是数据会在request.body中,可以自己解析;Django-rest-framework框架是提供了三种类型的数据包参数解析

原文地址:https://www.cnblogs.com/cnhyk/p/12354475.html

时间: 2024-10-09 07:40:20

axios插件:完成前后台ajax交互的相关文章

纯HTML页面为了避免频繁前后台Ajax交互方案

需求: 看这么一个简单的界面. 它有很多下拉框,下拉框中的可选项并不是固定不变的. 由于页面是静态HTML页面,不能使用后台JSP动态生成. 之前的解决方案是,页面打开后使用多个Ajax请求,获取下拉框中的数据. 改进方案:将所有的下拉框中的数据,缓存在后台一个js文件中,页面引用这个js文件.这样页面打开的时候,直接访问js文件中定义的变量就好了. js文件动态生成,每当变量发生变化的时候,清掉缓存后台js缓存文件,下次请求的时候重新生成. 具体方案: 后台缓存数据的js文件分以下几种: 1.

axios插件

前后台交互方式(重点) """ 1)form表单方式 i)get | post 两种请求方式,get请求包含直接在浏览器中输入url回车后发送的请求 ii)该方式的特点是一定会发生页面的跳转(刷新页面叫本页跳转) - 后台决定页面路由 2)ajax异步方式 i)get | post | patch | put | delete 等众多请求方式,请求的目的都是异步获取后台的数据 ii)该方式的特点是不会刷新页面,只是得到新的数据,前台自己完成页面的局部刷新.整体刷新.页面跳转

Axios插件和loading的实现

axios插件就是一个ajax插件 axios具有ajax的所有方法如 get post delete put等等的方法 使用时只需要引入即可 如import Axios form 'axios' 不需要使用Vue.use() 在vue中具有install的方法的才需要使用use的方法 在vue使用axios时 返回的是一个promise对象 所以 在接收这个数据时可以使用.then的方法 在组件的data中 可以直接使用定义一个接收数据的容器,然后在mounted时 去使用this.数据容器名

AJAX+REA实现前后台数据交互的加密解密

AJAX+REA实现前后台数据交互的加密解密 1.创建js文件Encryption.js /**  * 加密解密  */ /** RSA加密用 生成key */ function bodyRSA(){ /** 1024位的key参数写130,2014位的key参数写260 */ setMaxDigits(130); /** ajax 调用后台方法,取回公钥 */ var keyR ;     $.ajax({      url: "/GHGL/Key/pk",//请求后台的url,本例

用PHP和Ajax进行前后台数据交互——以用户登录为例

很多网站中都有用户登录系统,要完成用户的注册和登陆,就一定要用到前后台的数据交互.在这里以简单的用户注册和登陆为例介绍一下前后台交互的大致流程. 首先,我们来做一个简单的登陆界面. 这里为了方便我使用了bootstrap插件 <form class="form-horizontal"> <div class="form-group"> <label>用户名</label> <input type="te

统一前后台数据交互格式

公司前后台数据交互的格式是统一的,前台对jquery的ajax方法进行了一些封装,也就是说开发的时候并不是自己去调用$.ajax方法,而是调用统一的方法去处理. 我感觉还是比较方便的..确实可以少写一些代码(因为通用代码被封装了),而且管理起来比较方便,统一..然后观察了一些网上的其他网站...发现很多网站都是这么做的...于是我也想自己动手来试试....我自己是使用springmvc与fastjson来实现的...下面分享一下我的经验. 网上例子: 首先先来找个网上的例子: 这个页面的地址是h

在Java中Highcharts前后台数据交互传输

最近在项目中要添加一个Highcharts数据图表显示.看过官方的Ajax交互事例,可惜好像使用的是PHP语言,而且没有显示后台的代码.百度查看了很多前辈们的事例,发现没一样是我所要的效果...最后还是自己试着写写.今天却成功了!我后台用的是SSH框架.在此把此经验分享给大家. Highcharts其实还是满简单的,有点像一个框架一样,因为步骤单一而简单,只要自己在各个步骤中改一改自己想要的效果就出来了,在此我就不介绍这方面的知识了,有兴趣的可以上中文官方查看事例或学习.Highcharts中文

springmvc与ajax交互

Jsp页面: 需要引入jquery-1.10.2.min.js.json2.js.jquery.json-2.3.js三个文件 <%@ page contentType="text/html; charset=utf-8" language="java" errorPage=""%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/co

自制Javascript分页插件,支持AJAX加载和URL带参跳转两种初始化方式,可用于同一页面的多个分页和不同页面的调用

闲话部分 最近闲着实在无聊,就做了点小东西练练手,由于原来一直在用AspNetPager进行分页,而且也进行了深度的定制与原有系统整合的也不错,不过毕竟是用别人的,想着看自己能试着做出来不能,后台的分页插件已经有比较成熟的了,那就自己试着写一个前台分页吧. 话不多说,先上效果图: 优点与缺点 来说说优缺点吧,首先AspNetPager是后台分页控件,所以在向客户端回传HTML文档之前生成HTML阶段 就会把分页代码生成完毕,然后回传,而JS是前端代码,就是HTML文档在服务器组织完毕往客户端传送