Ajax 黑马学习

Ajax

资源

数据是服务器对外提供的资源,通过 请求 - 处理 - 响应方式获取

请求服务器数据, 用到 XMLHttpRequest 对象

XMLHttpRequest 是浏览器提供的js成员, 通过它可以请求服务器上的数据资源

image-20230724232141774

let xmlHttpRequest = new XMLHttpRequest();

请求方式 : get向服务器获取数据 post往服务器发送数据

Ajax 就是 用 XMLHttpRequest 对象和服务器进行数据交互

+++

image-20230724233539844

jQuery 中的 Ajax

$get 函数

$.get(url{必选}, [data], [callback]) ([请求地址], [请求资源携带参数], [请求成功回调函数])

$post函数

$.post(url, [data], [callback])

$ajax 函数

$.ajax({

​ type: ‘’,//请求方式, GET 或 POST

​ url: ‘’, //请求url地址

​ data: {}, //请求携带数据

​ success: function(res) }{ } // 请求成功后的回调函数

})

image-20230725093507421

接口文档

接口的说明文档, 调用接口的依据, 包含 接口URL 参数 输出内容 说明, 参照接口文档知道接口的作用, 以及接口如何调用

接口文档示例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zXxrRHK3-1690277828418)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230725105543331.png)]

+++

表单

在网页中采集数据, HTML中的 标签, 用于采集用户输入信息, 通过 标签提交操作, 把采集信息提交到服务器端处理

表单组成:表单标签,

表单域 , 包含文本框密码框多行文本框 复选框 单选框 下拉框 文件上传框

表单按钮

form

image-20230725114934550

+++

action, 规定提交表单向何处发送表单数据

action 属性的值是后端提供一个 URL地址 , 这个URL地址负责接收表单提交过来的数据

当 表单在未指定action属性下, action默认值是当前URL地址

提交表单后, 页面会跳转到action属性制定的URL地址


target , 规定在何处打开 action 的 URL

_blank 新窗口 _self (默认) 当前窗口

+++

method, 用get 还是 post 把表单数据提交给 action URL
默认 get

+++

get ? post ?

get 适合提交少量简单数据

post(常用) 适合提交大量复杂数据, 或者文件上传

++++

enctype, 发送表单数据之前对数据进行编码

image-20230725115653328

++++

表单同步提交

问题

1 页面发生跳转, 2 页面之前状态和数据丢失

解决方案: 表单只负责采集数据, Ajax负责将数据提交到服务器

通过Ajax 提交表单数据

监听表单提交事件

image-20230725142346746

获取表单数据 serialize() 方法

<body>

<form action="/login" id="f1">
  <input type="text" name="user_name">
  <input type="password" name="password">
  <button type="submit">提交</button>
</form>

<script>
  $(function () {
    $('#f1').submit(function (e) {
      e.preventDefault()
      console.log($(this).serialize());
    })
  })
</script>
</body>

数据交换格式

服务器端和客户端之间进行数据传输和交换的格式

XML 和 JSON(重点)

xml 太臃肿了, 浏览器解析困难, 有了 JSON

JSON

JavaScript 对象和数组的字符串表示法, 本质是字符串

专门用于存储和传输数据

两种结构

1 对象结构, JSON 中表示为 {} 括起来的内容, key:value 键值对形式, key必须双引号包括起来, value数据类型 [数字, 字符串, 布尔值, null, 数组, 对象]

image-20230725145105128

+++

2 数组结构, 在json中表示 [] 括起来的内容, 数据结构 ['", “”, “”, “”]

数组数据类型可以是 数字 字符串 布尔值 null 数组 对象

image-20230725145251541

JSON 语法注意事项

image-20230725145850571

+++

JSON 和 JS 对象 的 关系

JSON 字符串转换 JS 对象

// JSON  ->  JS对象
let obj = JSON.parse('{"a": "Hello", "b": "Hi"}');
console.log(obj);  //{ a: 'Hello', b: 'Hi' }
// JS对象  ->  JSON
let json = JSON.stringify(obj);
console.log(json);  // {"a":"Hello","b":"Hi"}

jQuery 实现上传文件

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="./lib/jquery.js"></script>
</head>

<body>

<input type="file" id="file1" />
<button id="btnUpload">上传文件</button>

<br />
<img src="./images/loading.gif" alt="" style="display: none;" id="loading" />

<script>
    $(function () {
        // 监听到Ajax请求被发起了
        $(document).ajaxStart(function () {
            $('#loading').show()
        })

        // 监听到 Ajax 完成的事件
        $(document).ajaxStop(function () {
            $('#loading').hide()
        })

        $('#btnUpload').on('click', function () {
            var files = $('#file1')[0].files
            if (files.length <= 0) {
                return alert('请选择文件后再上传!')
            }

            var fd = new FormData()
            fd.append('avatar', files[0])

            // 发起 jQuery 的 Ajax 请求,上传文件
            $.ajax({
                method: 'POST',
                url: 'http://www.liulongbin.top:3006/api/upload/avatar',
                data: fd,
                processData: false,
                contentType: false,
                success: function (res) {
                    console.log(res)
                }
            })
        })
    })
</script>

</body>

</html>

+++

axios

专注于网络数据请求的库 简单易用

axios 发起 GET 请求

axios.get(‘url’, {/参数/}).then(callback)

<body>
    <button id="btn" class="btn btn-success">发起get请求</button>
    <script>
        document.querySelector('#btn').addEventListener('click', function (res) {
            let url = 'https://ajax-base-api-t.itheima.net/api/get';
            let paramsObj = {name: 'zs', age: 20}
            axios.get(url, {params: paramsObj}).then(function (res) {
                console.log(res.data);
            })
        })
    </script>
</body>

axios 发送 POST 请求

axios.post(‘url’, {/参数/}).then(callback)

document.querySelector('#btn2').addEventListener('click', function () {
            let url = 'https://ajax-base-api-t.itheima.net/api/post'
            let dataObj = {address:'北京', location:'顺议区'}
            axios.post(url, {params: dataObj}).then(function (res) {
                console.log(res.data);
            })
        })

axios 发送原生请求

image-20230725162521926

document.querySelector('#btn3').addEventListener('click', function () {
            let dataObj = {address:'北京', location:'顺议区'}
            axios({
                method: 'get',
                url: 'https://ajax-base-api-t.itheima.net/api/get',
                data: {}, // POST参数
                params: {dataObj}  //get参数
            }).then(function (res) {
                console.log(res.data);
            })
        })

节流

减少某些事件触发频率

1 鼠标连续点击, 单位时间只触发一次

2 懒加载监听滚动条位置

使用节流阀优化代码: 选择性执行一部分事件

image-20230725165935077

Http请求消息

请求行: 请求方式, URL , HTTP协议版本

image-20230725170315615

+++

请求头; 客户端基本信息

User-Agent 当前浏览器类型

Content-Type 发送到服务器数据格式

Accept 客户端接收返回内容

Accept-Lauguage 客户端接收文本内容

+++

图片第一行是请求行

image-20230725170803443

+++

请求体

通过POST 提交到服务器的数据, GET请求没有请求体

image-20230725171830884

image-20230725171012140

+++

Http 响应消息(报文)

状态行

协议版本 状态码 状态码描述

image-20230725171407315

响应头部

image-20230725171603470

响应体

服务器响应给客户端的内容

image-20230725171753757

image-20230725171843491

Http 请求方法

属于 Http 协议一部分, 对服务器资源进行的操作

image-20230725171941708

Http 响应状态码

image-20230725172054757

+++

image-20230725172154481

image-20230725172205277

image-20230725172218384

image-20230725172230890

Git ignore 目录 示例

image-20230725172512488

请求方法

属于 Http 协议一部分, 对服务器资源进行的操作

[外链图片转存中…(img-mAXofpyn-1690277828429)]

Http 响应状态码

[外链图片转存中…(img-fN6iY6x5-1690277828429)]

+++

[外链图片转存中…(img-jNppU92O-1690277828430)]

[外链图片转存中…(img-n2Z3J0mb-1690277828430)]

[外链图片转存中…(img-Kd8XgW0u-1690277828430)]

[外链图片转存中…(img-KL1VE5SK-1690277828431)]

Git ignore 目录 示例

[外链图片转存中…(img-E54loKSF-1690277828432)]

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RNN架构解析——认识RNN模型

目录 RNN模型作用分类按照输入和输出的结构进行分类按照RNN的内部构造进行分类 RNN模型 RNN单层网络结构 作用 分类 按照输入和输出的结构进行分类 按照RNN的内部构造进行分类

臻图信息以数字孪生赋能智慧文旅新发展

随着AI、元宇宙的热度持续攀升&#xff0c;以及中共中央办公厅、国务院办公厅此前印发了《“十四五”文化发展规划》、《关于推进实施国家文化数字化战略的意见》等重要文件&#xff0c;要求各地区各部门发挥好对产业的引导、扶持和监管作用。 数字孪生作为元宇宙建设的基石&am…

系统架构设计师-软件架构设计(4)

目录 一、软件架构评估 1、敏感点 2、权衡点 3、风险点 4、非风险点 5、架构评估方法 5.1 基于调查问卷或检查表的方式 5.2 基于度量的方式 5.3 基于场景的方式 6、基于场景的评估方法 6.1 软件架构分析法&#xff08;SAAM&#xff09; 6.2 架构权衡分析法&#xff08;ATAM&am…

【CAS6.6源码解析】源码构建时-默认service配置不生效解决方案

CAS6的源码提供了默认的HTTPSandIMAPS-10000001.json配置用于授权所有的https和imaps服务&#xff0c;但是当添加JsonServiceRegistry模块启动后&#xff0c;会发现service是没有被注册的&#xff0c;是由于json路径引起的错误&#xff0c;可以把路径修改为绝对路径以解决此问题…

支付宝原生小程序组件与父级传递数据(微信小程序基本一样)

1. 声明组件 在对应的目录下,右击点击 新建小程序,之后会生成对应的文件 2. 子组件 Component({data: {colorList: [#165FF6, #3D16F6,

vue3+ts+elementui-plus二次封装弹框

一、弹框组件BaseDialog <template><div classmain><el-dialog v-model"visible" :title"title" :width"dialogWidth" :before-close"handleClose"><!-- 内容插槽 --><slot></slot><template…

Go基础—反射,性能和灵活性的双刃剑

Go基础—反射&#xff0c;性能和灵活性的双刃剑 1 简介2 结构体成员赋值对比3 结构体成员搜索并赋值对比4 调用函数对比5 基准测试结果对比 1 简介 现在的一些流行设计思想需要建立在反射基础上&#xff0c;如控制反转&#xff08;Inversion Of Control&#xff0c;IOC&#x…

基于Spring包扫描工具和MybatisPlus逆向工程组件的数据表自动同步机制

公司产品产出的项目较多。同步数据库表结构工作很麻烦。一个alter语句要跑到N个客户机上执行脚本。超级费时麻烦。介于此&#xff0c;原有方案是把增量脚本放到一resource包下&#xff0c;项目启动时执行逐行执行一次。但由于模块开发人员较多&#xff0c;总有那么一两个机灵鬼…

【运维】DevOps全流程笔记(未完成)

运维笔记 DevOps基本流程Code阶段工具&#xff08;gitlab安装&#xff09;Build阶段工具&#xff08;Maven安装&#xff09;Integrate阶段工具JenkinsJenkins介绍Jenkins安装Jenkins入门配置 CI/CD操作集成Sonar Qube集成HarborJenkins流水线Kubernetes编排工具 DevOps全流程笔…

1400*C. Strong Password

Example input 5 88005553535123456 2 50 56 123412341234 3 111 444 1234 4 4321 4321 459 2 49 59 00010 2 10 11output YES NO YES NO YES解析&#xff1a; 题目要求有一种密码不在数据库中即可&#xff0c;所以枚举每一位的所有可能的数字&#xff0c;记录这一位数字在数…

C++-----list

本期我们来讲解list&#xff0c;有了string和vector的基础&#xff0c;我们学习起来会快很多 目录 list介绍 ​编辑 list常用接口 insert erase reverse sort merge unique remove splice 模拟实现 基础框架 构造函数 push_back 迭代器 常见问题 const迭代器 …

vue3 实现排序按钮

需求背景解决效果index.vue 需求背景 需要实现一个复用性&#xff0c;是提供表单顺倒排序的按钮 解决效果 index.vue <!--/*** author: liuk* date: 2023/7/25* describe: 排序按钮*/--> <template><div class"sort-fn"><span :class"[…

C++ 名字空间namespace

在C中支持三种域&#xff1a;局部域、名字空间域和类域。 名字空间域是随标准C而引入的。它相当于一个更加灵活的文件域&#xff08;全局域&#xff09;&#xff0c;可以用花括号把文件的一部分括起来&#xff0c;并以关键字namespace开头给它起一个名字&#xff1a; namespac…

STM32读写内部Flash

内存映射 stm32的flash起始地址为0x0800 0000&#xff0c;结束地址为0x0800 0000加上芯片实际的Flash大小&#xff0c;不同芯片Flash大小不同&#xff0c;RAM同理。 对于STM32F103RCT6&#xff0c;Flash256KB&#xff0c;所以结束地址为0x0803 ffff。 Flash中的内容一般用来存…

WEB:easyphp

背景知识 php弱类型比较 MD5碰撞 题目 进行代码审计 <?php highlight_file(__FILE__); $key1 0;//值赋值 $key2 0;$a $_GET[a];//get方法获取值 $b $_GET[b];if(isset($a) && intval($a) > 6000000 && strlen($a) < 3){ //a的值需要大于 60000…

zabbix钉钉报警

登录钉钉客户端,创建一个群,把需要收到报警信息的人员都拉到这个群内. 然后点击群右上角 的"群机器人"->"添加机器人"->"自定义", 记录该机器人的webhook值。 添加机器人 在钉钉群中&#xff0c;找到只能群助手 添加机器人 选择自定义机…

STM32 互补PWM 带死区 HAL

1、设置PWM波频率100KHz&#xff0c;占空比50%&#xff0c;死区时间1us 2、 while 循环之前启动PWM HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1); //启动TIM1_CH1 PWM输出 HAL_TIMEx_PWMN_Start(&htim1,TIM_CHANNEL_1);//启动TIM1_CH1N PWM输出 3、死区计算 DT_time…

Linux三剑客与正则

目录 正则表达式 text测试文件 正则符号分类 基础正则符号 正则表达式的贪婪性 扩展正则符号 linux三剑客 三剑客特点及应用场景 grep sed sed命令执行过程 sed查找script sed删除script sed增加script 具体功能 具体script sed替换script 后向引用 awk aw…

SQLite Studio 连接 SQLite数据库

1、在SQLite中创建数据库和表 1.1、按WINR&#xff0c;打开控制台&#xff0c;然后把指引到我们的SQLite的安装路径&#xff0c;输入D:&#xff0c;切换到D盘&#xff0c;cd 地址&#xff0c;切换到具体文件夹&#xff0c;输入“sqlite3”&#xff0c;启动服务 1.2、创建数据库…

Sip IP网络对讲广播模块,sip网络寻呼话筒音频模块

Sip IP网络对讲广播模块&#xff0c;sip网络寻呼话筒音频模块 模块介绍 SV-2401VP和SV-2403VPIP网络对讲广播模块是一款通用的独立SIP音频功能模块&#xff0c;可以轻松地嵌入到OEM产品中。该模块对来自网络的SIP协议及RTP音频流进行编解码。 该模块支持多种网络协议和音频编…