Ajax 黑马学习

news2024/12/20 7:03:24

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)]

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

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

相关文章

requests---jsonpath在接口自动化中的应用

前言 我们在做接口测试时&#xff0c;大多数返回的都是json属性&#xff0c;我们需要通过接口返回的json提取出来对应的值&#xff0c;然后进行做断言或者提取想要的值供下一个接口进行使用&#xff0c;但是如果返回的json数据嵌套了很多层&#xff0c;通过查找需要的词&#x…

软件进行用户体验测试有哪些要点?

无论是移动应用还是网页应用&#xff0c;优秀的用户体验是软件成功的关键所在。软件用户体验测试是一种关键的测试方法&#xff0c;旨在评估用户在使用软件过程中的感受和体验。通过深入了解用户需求&#xff0c;模拟真实场景&#xff0c;以及综合用户反馈&#xff0c;软件开发…

【C++】C++11——右值引用和移动语义|可变参数模板

文章目录 一、左值引用和右值引用左值引用和右值引用的定义左值引用和右值引用的比较 二、右值引用的使用场景和意义左值引用的短板移动构造和移动赋值万能引用和完美转发 三、新的类功能类成员变量初始化default 和 delete 四、可变参数模板 一、左值引用和右值引用 传统的C语…

操作系统资源限制问题(Memory Analyzer使用OutOfMemoryError)

java8使用Memory Analyzer大概是10左右的版本&#xff0c;用最新版本要java17 MemoryAnalyzer-1.10.0.20200225-win32.win32.x86_64 MAT(Memory Analyzer Tool)下载 https://www.cnblogs.com/zwh0910/p/15774590.html Eclipse downloads - Select a mirror | The Eclipse F…

"科技与狠活"企业级无代码开发MES系统,一周实现数字化

随着科技的不断发展&#xff0c;企业级无代码开发平台成为了一种新型的解决方案&#xff0c;能够有效降低软件开发门槛&#xff0c;提升开发效率。在制造业领域&#xff0c;MES系统&#xff08;Manufacturing Execution System&#xff09;作为一种关键的生产管理工具&#xff…

小程序开发收费多少

一、小程序开发费用一览表 ① 域名费用 域名的价格取决于选择的域名类型&#xff0c;常见的有如.com、.cn等这些&#xff0c;以及注册商的定价策略。比如&#xff0c;一个.com 域名一年的的注册费用大约在 50-200 元人民币之间。 ②服务器费用 服务器费用是根据服务器的配置…

day37-Pokedex(神奇宝贝图鉴卡牌展示)

50 天学习 50 个项目 - HTMLCSS and JavaScript day37-Pokedex&#xff08;神奇宝贝图鉴卡牌展示&#xff09; 效果 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport&qu…

vscode默认gbk编码格式打开

目录 1. 问题描述2. 解决方案 1. 问题描述 每次打开vscode都是utf-8格式打开文件&#xff0c;然后满屏的中文乱码&#xff0c;自己手动换成gbk编码 后中文显示正常&#xff0c;但是换多了很烦。 2. 解决方案 ctrlshiftP 点首选项&#xff1a;打开用户设置 加上这行在最后&…

文件包含漏洞利用思路

简介 通过PHP函数引入文件时&#xff0c;传入的文件名没有经过合理的验证&#xff0c;从而操作了预想之外的文件&#xff0c;导致意外的文件泄漏甚至恶意代码注入。 常见的文件包含函数 php中常见的文件包含函数有以下四种&#xff1a; include()require()include_once()re…

教你合法安全匿名访问网站的10个技巧

大家常说互联网大数据使得每个人上网更透明&#xff0c;确实隐私性和安全性已成为人们在进行互联网浏览时所关注的焦点。无论您想要对匿名访问目标网站进行调查研究&#xff0c;又或者是爬虫业务、跨境业务&#xff0c;完全保持匿名都可能成为关键。 为了帮助您保护更多隐私和安…

【OC总结-weak的底层原理】

文章目录 1. SideTables1.1 StripedMap1.2 SideTable1.3 引用计数refcnts 存储结构RefcountMap1.4 weak_table_t结构体1.4.1 .weak_entry_t结构体 2.1 weak的实现及其调用的相关函数2.1 初始化时&#xff1a;2.1.1 objc_initWeak方法2.1.2 storeWeak方法 2.2 添加引用时&#x…

【C++从0到王者】第十站:手撕string

文章目录 一、String的基本结构二、String的构造函数1.string(const char* str)2.string()3.string(const char* str " ")4.string(const string& s) 二、String的析构函数三、获取String中的字符串四、获取有效元素个数五、operator[]运算符重载六、增删查改之…

Fastify系列-从0到1超详细手把手教你使用Fastify构建快速的API

什么是Fastify&#xff1f; Fastify是一个web框架&#xff0c;高度专注于以最少的开销和强大的插件架构提供最佳的开发体验。它的灵感来自于Hapi和Express&#xff0c;据我们所知&#xff0c;它是运行在Node.js上的最快的Web框架之一。 为什么使用Fastify&#xff1f; 这些是…

PostgreSQL--实现数据库备份恢复详细教学

前言 这是我在这个网站整理的笔记&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;RodmaChen PostgreSQL--实现数据库备份恢复详细教学 一. 数据库备份二. 数据库恢复三. 存留问题 数据库备份恢复功能是每个产品所需的&#xff0c;以下是简单的脚本案例&a…

遇到了一个存在XSS(存储型)漏洞的网站

第一个漏洞self xss&#xff08;存储型&#xff09; 存在漏洞的网站是https://www.kuangstudy.com/ 然后点击个人设置 在编辑主页中&#xff0c;我们可以用最简单的script语句进行注入&#xff0c;提交&#xff1b; 出现弹窗&#xff0c;说明它已经把代码进行解析&#x…

【设计模式学习1】什么是单例模式?单例模式的几种实现。

一、什么是单例模式 单例模式是在内存中只创建一个对象的模式&#xff0c;它保证一个类只有一个实例。 二、单例模式的几种实现 &#xff08;一&#xff09;懒汉式单例模式 /*** 懒汉式单例模式* &#xff08;懒加载&#xff0c;需要的时候在去加载&#xff09;* 优点&…

递归——另类加法、走方格的方案数

大家好&#xff0c;这里是bang_bang&#xff0c;今天来记录2道递归的典型题目 目录 1.另类加法 2.走方格的方案数 1.另类加法 另类加法__牛客网 (nowcoder.com) 给定两个int A和B。编写一个函数返回AB的值&#xff0c;但不得使用或其他算数运算符。 测试样例&#xff1a;…

【Linux】system V IPC原理分析

目录 System V IPC分类 key_t 键和ftok函数 ipc_perm结构 创建和打开IPC通道 IPC权限问题 理解IPC工作原理 System V IPC分类 System V 消息队列System V 共享内存System V 信号量 之所以称为System V IPC是因为这三种IPC机制都是来源于System V Unix的实现。 消息队列信…

一款好用的思维导图软件drawio

最近需要画思维导图&#xff0c;结果发现既然被人用来收费了。所以记录一下&#xff0c;免得大家上当。 首先说明&#xff0c;这个东东在github上是免费开源的&#xff0c;收费的是一些不法分子搞得。下面是收费版本得界面。 开源地址&#xff1a; https://github.com/jgraph…

坑爹的shadow -- 总结 与 各种坑

作者&#xff1a;snwrking 最近公司来了新UX总监, 很喜欢给设计添加浓重的, 而且是好几层的阴影. 这下就苦了我们Android开发了. 因为是Android不支持啊, 巧妇也难为无米之炊啊. (折中方法也不是没有, 就是自己把阴影做个view, 但它的blur这些比较麻烦, 做过Android的都知道这个…