AJAX-day1:

news2024/10/7 14:23:54

注:文件布局:

一、AJAX的概念:

AJAX是浏览器与服务器进行数据通信的技术 =>把数据变活

二、AJAX的使用:

  1. 使用axios库,与服务器进行数据通信

    1. 基于XMLHttpRequest封装,代码简单

    2. Vue,React项目使用

  2. 学习XMLHttpRequest对象,了解AJAX底层原理

1.axios库的初步使用:

  1. 引入JS:https://cdn.bootcdn.net/ajax/libs/axios/1.7.2/axios.min.js 或 https://cdn.bootcdn.net/ajax/libs/axios/1.7.2/axios.js

    1. <script src="https://cdn.jsdelivr.net/npm/axios@1.7.2/dist/axios.min.js"></script>
  2. 使用axios函数:axios全攻略 | 羸弱的小金鱼 (ykloveyxk.github.io)

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <script src="https://cdn.bootcdn.net/ajax/libs/axios/1.7.2/axios.min.js"></script>
        <script>
            axios({
                url:'目标资源地址'
            }).then((result)=>{
                //对服务器返回的数据做后续处理
            })
        </script>
    </body>
    </html>

    目标资源:http://hmajax.itheima.net/api/province:省份列表数据

2.使用URL进行参数查询:

URL后加 ?pname=河北省

语法:http://xxx.com/xxx/xxx?参数名1=值1&参数名2=值2

axios({
                url: 'http://hmajax.itheima.net/api/area',
                params: {
                    pname: `${query1.value}`,// 参数1
                    cname: `${query2.value}` // 参数2
                }
            }).then((result) => {
                console.log(result.data.list);
                ul.innerHTML = result.data.list.map((x) => `<li>${x}</li>`).join('')
                console.log(result.data.list.map((x) => `<li>${x}</li>`));
            })

3.常用的请求方法与数据提交:

概念:对服务器资源要执行的操作

请求方法操作
GET(get)获取数据
POST(post)提交数据
PUT(put)修改数据(全部)
DELETE(delete)删除数据
PATCH(patch)修改数据(部分)

axios的请求配置:

url :请求的URL网址

method :请求的方法,GET可以省略(不区分大小写)

params:查询参数

data:提交的数据

//获取数据
axios({
            url: '目标资源地址',
            //method: 'get',
            params:{
                参数名:值
            }
        }).then((result) => {
            //对返回的数据的处理
        })
 
//提交数据        
axios({
            url: '目标资源地址',
            method: 'post',
            data: {
                参数名: 值
            }
        }).then((result) => {
            //对返回的数据的处理
        })

4.axios的错误处理:

服务器返回的信息:Uncaught大对象里的data

语法格式:

 axios({
            //请求项
        }).then(result=>{
            //处理数据
        }).catch(error=>{
            //处理错误
        })

三、HTTP协议:

1.请求报文:

HTTP协议:规定了浏览器发送及服务器返回内容的格式

请求报文:浏览器按照HTTP协议要求的格式,发送给服务器的内容

请求报文样例:

组成部分:

  1. 请求行:请求方法,URL,协议

  2. 请求头:以键值对格式携带的附加信息,例如:Content-Type(本次浏览器携带的内容类型)

  3. 空行:分割请求头和内容数据,空行后是内容数据(发给服务器的资源)

  4. 请求体:发送的资源

查看请求报文:

2.用请求报文排查错误:

传不了图片(都是临时的,清理掉了),大家看这篇:&3 在浏览器中查看请求报文和响应报文_f12看请求和响应怎么看-CSDN博客

查看提交的信息,判断错误位置

3.响应报文:

HTTP协议:规定了浏览器发送及服务器返回内容的格式

响应报文:服务器按照HTTP协议要求的格式,发送给浏览器的内容

  1. 响应行(状态行):协议,HTTP响应状态码(400表示响应失败)、状态信息

  2. 响应头:以键值对的格式携带的附加信息,如:Conttent-Type

  3. 空行:分割响应头

  4. 响应体:返回的资源

查看响应报文:

HTTP状态码:用来表明,请求是否成功

状态码说明
1xx信息
2xx成功
3xx重新定向消息
4xx客户端错误
5xx服务端错误

常见状态码:

200:成功

404:服务器找不到资源

四、接口文档:

接口文档:描述接口的文章

接口:使用AJAX和服务器通讯是使用的URL,请求方法,及参数

AJAXS接口:欢迎使用 - AJAX阶段 (apifox.com)

五、from-serialize插件的使用:

作用:快速地搜集表单元素的值

引入插件:form-serialize.js插件下载&引用-CSDN博客

<!DOCTYPE html>
<html lang="en">
​
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="../bootstrap-5.3.0-alpha1-dist/css/bootstrap.min.css">
</head>
​
<body>
    <form action="javascript" class="example">
        <input type="text" name="un">
        <input type="password" name="pw">
        <!-- <input type="button" class="btn" value="提交"> -->
    </form>
    <button class="btn">提交</button>
    <script src="https://cdn.jsdelivr.net/npm/axios@1.7.2/dist/axios.min.js"></script>
    <script src="../from-serialize/from-serialize.js"></script>
    <script>
        const input = document.querySelector('.example')
        const btn = document.querySelector('.btn')
        btn.addEventListener('click', () => {
            let data = serialize(input, { hash: true, empty: true })
            console.log(data);
        })
    </script>
</body>
​
</html>

必须使用:

<form action="javascript" class="example">
        <input type="text" name="un">
        <input type="password" name="pw">
        <!-- <input type="button" class="btn" value="提交"> -->
    </form>

的格式

form用来确定区间

name是键名

value是值

其中:hash 设置获取的数据结构:

  1. true:获取得到JS对象

  2. false:获取得到查询字符串

empty 设置是否获取空值:

  1. true:允许获取空值

  2. false:bu获取空值

六、案例-整合登入:

代码:

<!DOCTYPE html>
<html lang="en">
​
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="../bootstrap-5.3.0-alpha1-dist/css/bootstrap.rtl.min.css">
    <style>
        .banner {
            width: 700px;
            height: 700px;
            margin: 20px auto;
        }
​
        .row {
            margin-bottom: 15px;
        }
​
        .alert {
            transition: all .5s;
        }
​
        .unshow {
            opacity: 0;
        }
    </style>
</head>
​
<body>
    <div class="banner">
        <h1>欢迎-登入</h1>
        <div class="alert unshow" role="alert">
        </div>
        <form class="login-form">
            <div class="row g-3 align-items-center">
                <div class="col-auto">
                    <label for="username" class="col-form-label">用户名:</label>
                </div>
                <div class="col-auto">
                    <input type="text" id="username" name="username" class="form-control"
                        aria-describedby="passwordHelpInline">
                </div>
            </div>
            <div class="row g-3 align-items-center">
                <div class="col-auto">
                    <label for="password" class="col-form-label">密码:</label>
                </div>
                <div class="col-auto">
                    <input type="password" id="password" name="password" class="form-control"
                        aria-describedby="passwordHelpInline">
                </div>
                <div class="col-auto">
                    <span id="passwordHelpInline" class="form-text">
                        Must be 6-20 characters long.
                    </span>
                </div>
            </div>
        </form>
        <button class="btn btn-primary">登入</button>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/axios@1.7.2/dist/axios.min.js"></script>
    <script src="../from-serialize/from-serialize.js"></script>
    <script>
        // const un = document.querySelector('#username')
        // const pw = document.querySelector('#password')
        const input = document.querySelector('.login-form')
        const btn = document.querySelector('button')
        const alt = document.querySelector('.alert')
​
        function alertFn(msg, isSuccess) {
            alt.classList.remove('unshow')
            let bgStyle = isSuccess ? 'alert-success' : 'alert-danger'
            alt.classList.add(bgStyle)
            alt.innerText = msg
            // alert('用户名或密码错误')
​
            setTimeout(function () {
                alt.classList.add('unshow')
                alt.classList.remove(bgStyle)
            }, 2000)
        }
​
​
        btn.addEventListener('click', () => {
            let data = serialize(input, { hash: true, empty: true })
            console.log(data);
            if (data.username.length < 8) {
                alertFn('用户名长度不能少于8位', 0)
​
                return //阻止代码继续执行
            }
            else if (data.password.length < 6) {
                alertFn('密码长度不能少于6位', 0)
​
                return //阻止代码继续执行
            }
            axios({
                url: 'https://hmajax.itheima.net/api/login',
                method: 'post',
                data: {
                    username: data.username,
                    password: data.password
                }
            }).then(result => {
                console.log(result);
​
                alertFn(result.data.message, 1)
​
            }).catch(error => {
                console.log(error);
​
                alertFn(error.response.data.message, 0)
            })
        })
    </script>
</body>
​
</html>

效果:

1.初始界面:

2.直接登入时或用户名长度少于8位时(直接点提交):

3.无密码时或密码少于6位时(用户名为 :  itheima007):

4.登入失败时:

5.成功登入(用户名:itheima007   密码:7654321):

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1898279.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++基础22 字符串与字符数组及其相关操作

这是《C算法宝典》C基础篇的第22节文章啦~ 如果你之前没有太多C基础&#xff0c;请点击&#x1f449;C基础&#xff0c;如果你C语法基础已经炉火纯青&#xff0c;则可以进阶算法&#x1f449;专栏&#xff1a;算法知识和数据结构&#x1f449;专栏&#xff1a;数据结构啦 ​ 目…

野指针的概念 如果规避野指针

目录 野指针的概念 有关野指针的代码 如何规避野指针 野指针的概念 野指针就是指针指向的位置是不可知的&#xff08;随机的&#xff0c;不正确的&#xff0c;没有明确限制的&#xff09; 有关野指针的代码 指针未初始化&#xff1a; #include<stdio.h> int main…

【全网最全ABC三题完整版】2024年APMCM第十四届亚太地区大学生数学建模竞赛(中文赛项)完整思路解析+代码+论文

我是Tina表姐&#xff0c;毕业于中国人民大学&#xff0c;对数学建模的热爱让我在这一领域深耕多年。我的建模思路已经帮助了百余位学习者和参赛者在数学建模的道路上取得了显著的进步和成就。现在&#xff0c;我将这份宝贵的经验和知识凝练成一份全面的解题思路与代码论文集合…

【fastadmin开发实战】经营数据自动识别录入

项目场景描述&#xff1a;每日录入各个门店的员工经营数据&#xff0c;直接从微信复制报数、系统识别录入。 解决方案&#xff1a;各个门店按照固定的汇报模板进行汇报&#xff08;如福田店有员工1、2、3、4、5号员工&#xff0c;每个员工按模板报数&#xff09; 例如&#xf…

FTP、http 、tcp

HTTP VS FTP HTTP &#xff1a;HyperText Transfer Protocol 超文本传输协议&#xff0c;是基于TCP协议 FTP&#xff1a; File Transfer Protocol 文件传输协议&#xff0c; 基于TCP协议&#xff0c; 基于UDP协议的FTP 叫做 TFTP HTTP 协议 通过一个SOCKET连接传输依次会话数…

《安全行业大模型技术应用态势发展报告(2024)》

人工智能技术快速迭代发展&#xff0c;大模型应用场景不断拓展&#xff0c;随着安全行业对人工智能技术的应用程度日益加深&#xff0c;大模型在网络安全领域的应用潜力和挑战逐渐显现。安全行业大模型技术的应用实践不断涌现&#xff0c;其在威胁检测、风险评估和安全运营等方…

SCI一区级 | Matlab实现BO-Transformer-LSTM多特征分类预测/故障诊断

SCI一区级 | Matlab实现BO-Transformer-LSTM多特征分类预测/故障诊断 目录 SCI一区级 | Matlab实现BO-Transformer-LSTM多特征分类预测/故障诊断效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.【SCI一区级】Matlab实现BO-Transformer-LSTM特征分类预测/故障诊断&…

Patch SCN使用说明---惜分飞

软件说明 该软件是惜分飞&#xff08;https://www.xifenfei.com&#xff09;开发&#xff0c;仅用来查看和修改Oracle数据库SCN(System Change Number),主要使用在数据库因为某种原因导致无法正常启动的情况下使用该工具进行解决.特别是Oracle新版本中使用隐含参数,event,orad…

光伏电站数据采集方案(基于工业路由器部署)

​ 一、方案概述 本方案采用星创易联SR500工业路由器作为核心网关设备&#xff0c;实现对光伏电站现场数据的实时采集、安全传输和远程监控。SR500具备多接口、多功能、高可靠性等特点&#xff0c;能够满足光伏电站数据采集的各种需求。&#xff08;key-iot.com/iotlist/sr500…

昆虫学(书籍学习资料)

包括昆虫分类&#xff08;上下册&#xff09;、昆虫生态大图鉴等书籍资料。

【SpringBoot3学习 | 第1篇】SpringBoot3介绍与配置文件

文章目录 前言 一. SpringBoot3介绍1.1 SpringBoot项目创建1. 创建Maven工程2. 添加依赖(springboot父工程依赖 , web启动器依赖)3. 编写启动引导类(springboot项目运行的入口)4. 编写处理器Controller5. 启动项目 1.2 项目理解1. 依赖不需要写版本原因2. 启动器(Starter)3. Sp…

溶解氧(DO)理论指南(1)

转载自梅特勒官网资料&#xff0c;仅用于学习交流&#xff0c;侵权则删&#xff01; 溶解氧理论指南 1 溶解氧(DO)原理1.1 溶解氧和分压1.2 氧气在水中的溶解度1.3 溶解氧对生物的重要性1.4 溶解氧对工业的重要性 1 溶解氧(DO)原理 氧是宇宙中第三大常见元素&#xff0c;也是…

【C++】 解决 C++ 语言报错:Stack Overflow

文章目录 引言 栈溢出&#xff08;Stack Overflow&#xff09;是 C 编程中常见且严重的错误之一。栈溢出通常发生在程序递归调用过深或分配过大的局部变量时&#xff0c;导致栈空间耗尽。栈溢出不仅会导致程序崩溃&#xff0c;还可能引发不可预测的行为。本文将深入探讨栈溢出…

1-2 什么是自然语言处理

1-2 什么是自然语言处理 主目录点这里 自然语言处理是计算机学科、人工智能与语言学领域的一个交叉学科&#xff0c;主要研究如何让计算机能够理解、处理、生成和模拟人类语言的能力&#xff0c;从而实现与人类进行自然语言对话的能力。 如上图&#xff0c;你好通过自然语言处…

2024年7月6日 十二生肖 今日运势

小运播报&#xff1a;2024年7月6日&#xff0c;星期六&#xff0c;农历六月初一 &#xff08;甲辰年庚午月辛未日&#xff09;&#xff0c;法定节假日。 红榜生肖&#xff1a;猪、马、兔 需要注意&#xff1a;狗、鼠、牛 喜神方位&#xff1a;西南方 财神方位&#xff1a;正…

初学Spring之静态代理模式

代理模式&#xff08;不改变业务原有功能&#xff09;是 Spring AOP 的底层&#xff0c;分为静态代理、动态代理 静态代理&#xff1a; 抽象角色&#xff1a;一般会使用接口或抽象类来解决 真实角色&#xff1a;被代理的角色&#xff08;房东&#xff09; 代理角色&#xf…

uniapp中实现跳转链接到游览器(安卓-h5)

uniapp中实现跳转链接到游览器&#xff08;安卓-h5&#xff09; 项目中需要做到跳转到外部链接&#xff0c;网上找了很多都不是很符合自己的要求&#xff0c;需要编译成app后是跳转到游览器打开链接&#xff0c;编译成web是在新窗口打开链接。实现的代码如下&#xff1a; 效果&…

matlab 绘制高等数学中的二维函数示例

matlab 绘制高等数学中的二维函数示例 绘制高等数学中的二维函数示例绘制结果 绘制高等数学中的二维函数示例 clc,clear,close all; % 定义方程 eqn (x, y) (x.^2 y.^2).^3 - y.^4;% 绘制方程曲线和坐标轴 ezplot(eqn, [-2, 2, -2, 2]) hold on % 在同一图形中保持绘图% 绘…

YOLO V7项目使用

YOLO V7项目使用 根据官方论文中提供的项目地址&#xff1a;使用git clone将项目下载到本地。 https://github.com/WongKinYiu/yolov7 git clone https://github.com/WongKinYiu/yolov7 使用pycharm打开项目&#xff0c;根据官方提供的requirement.txt文件下载项目启动所需要的…

linux深度deepin基于rsync和apt-mirror同步软件源及构建本地内网源

目录 一、rsync方式二、apt-mirror方式1.安装apt-mirror2.配置apt-mirror(/etc/apt/mirror.list)3.新建存放目录开始下载 3.发布mirror站点 一、rsync方式 参考官方文档地址&#xff1a; https://www.deepin.org/index/docs/wiki/05_HOW-TO/08_%E9%95%9C%E5%83%8F%E5%8A%A0%E9%…