初始 Ajax

news2025/1/13 16:53:18

文章目录

  • 一、服务器的基本概念
    • 1、客户端与服务器
    • 2、url地址
    • 3、客户端与服务器的通信过程
    • 4、服务器对外提供资源
    • 5、资源的请求方式
  • 二、初始 Ajax
    • 1、了解Ajax
    • 2、JQuery中的Ajax
      • (1)$.get()函数的用法
      • (2)$.post()函数的语法
      • (3)$.ajax()函数的语法
    • 3、接口
    • 4、案例--图书馆管理


一、服务器的基本概念

1、客户端与服务器

  • 上网过程中,负责存放和对外提供资源的电脑,叫做服务器
  • 上网过程中,负责获取和消费资源的电脑,叫做客户端

2、url地址

  • URL(全称是UniformResourceLocator)中文叫统一资源定位符
  • 用于标识互联网上每个资源的唯一存放位置。
  • 浏览器只有通过URL地址,才能正确定位资源的存放位置,从而成功访问到对应的资源。
  • 常见的URL举例:

http://www.baidu.com
http://www.taobao.com
http://www.cnblogs.com/liulongbinblogs/p/11649393.html

  • URL地址一般由三部分组成:
    ① 客户端与服务器之间的通信协议
    ② 存有该资源的服务器名称
    ③ 资源在服务器上具体的存放位置

学习视频资料提供的图片

3、客户端与服务器的通信过程

  • 客户端与服务器之间的通信过程,分为 请求 – 处理 – 响应 三个步骤。
  • 网页中的每一个资源,都是通过 请求 – 处理 – 响应 的方式从服务器获取回来的。
  • 客户端请求服务器、服务器处理请求、服务器响应客户端

4、服务器对外提供资源

  • 网页中常见资源:文字内容、Image图片、Audio音频、Video视频····
  • 网页中的数据,也是服务器对外提供的一种资源。例如股票数据、各行业排行榜等
  • 数据是网页的灵魂
  • 数据是资源,只要是资源,必须通过请求-处理-响应的方式进行获取
  • 如果要在网页中请求服务器上的数据资源,则需要用到 XMLHttpRequest 对象。
  • XMLHttpRequest(简称 xhr)是浏览器提供的 js 成员,通过它,可以请求服务器上的数据资源。
  • 最简单的用法 var xhrObj = new XMLHttpRequest()

5、资源的请求方式

  • 客户端请求服务器时,请求的方式有很多种,最常见的两种请求方式分别为 getpost 请求。
  • get 请求通常用于获取服务端资源(向服务器要资源)。 例如:根据 URL 地址,从服务器获取 HTML 文件、css 文件、js文件、图片文件、数据资源等
  • post 请求通常用于向服务器提交数据(往服务器发送资源)。例如:登录时向服务器提交的登录信息、注册时向服务器提交的注册信息、添加用户时向服务器提交的用户信息等各种数据提交操作

二、初始 Ajax

1、了解Ajax

  • Ajax 的全称是 Asynchronous Javascript And XML(异步 JavaScript 和 XML)。
  • 通俗的理解:在网页中利用 XMLHttpRequest 对象和服务器进行数据交互的方式,就是Ajax。
  • Ajax能让我们轻松实现网页与服务器之间数据交互

2、JQuery中的Ajax

  • 浏览器中提供的 XMLHttpRequest 用法比较复杂
  • 所以 jQuery 对 XMLHttpRequest 进行了封装,提供了一系列 Ajax 相关的函数,极大地降低了 Ajax 的使用难度
  • Query 中发起 Ajax 请求最常用的三个方法如下:$.get()$.post()$.ajax()

(1)$.get()函数的用法

  • jQuery 中 $.get() 函数的功能单一
  • 专门用来发起 get 请求,从而将服务器上的资源请求到客户端来进行使用。
  • 语法:$.get(url, [data], [callback])
参数名参数类型是否必须说明
urlstring要请求的资源地址
dataobject请求资源期间要携带的参数
callbackfunction请求成功的回调函数

不带参数的请求

$.get('url地址', function(res) {
    console.log(res) // 这里的 res 是服务器返回的数据
})

带参数的请求

$.get('url地址', { id: 1 }, function(res) {
    console.log(res)
})

(2)$.post()函数的语法

  • jQuery 中 $.post() 函数的功能单一
  • 专门用来发起 post 请求,从而向服务器提交数据。
  • 语法:$.post(url, [data], [callback])
参数名参数类型是否必须说明
urlstring提交数据的地址
dataobject要提交的数据
callbackfunction提交成功的回调函数
$.post(
   '请求的URL地址', 
   { bookname: '水浒传', author: '施耐庵', publisher: '上海图书出版社' }, // 提交的数据
   function(res) { // 回调函数
      console.log(res)
   }
)

(3)$.ajax()函数的语法

  • 相比于 $.get()$.post() 函数,jQuery 中提供的 $.ajax() 函数,是一个功能比较综合的函数
  • 它允许我们对 Ajax 请求进行更详细的配置
  • 基本语法:
$.ajax({
   type: '', // 请求的方式,例如 GET 或 POST
   url: '',  // 请求的 URL 地址
   data: { },// 这次请求要携带的数据
   success: function(res) { } // 请求成功之后的回调函数
})

GET请求

$.ajax({
   type: 'GET', // 请求的方式
   url: 'url地址',  // 请求的 URL 地址
   data: { id: 1 },// 这次请求要携带的数据
   success: function(res) { // 请求成功之后的回调函数
       console.log(res)
   }
})

POST请求

$.ajax({
   type: 'POST', // 请求的方式
   url: 'url地址',  // 请求的 URL 地址
   data: { // 要提交给服务器的数据
      bookname: '水浒传',
      author: '施耐庵',
      publisher: '上海图书出版社'
    },
   success: function(res) { // 请求成功之后的回调函数
       console.log(res)
   }
})

3、接口

  • 使用 Ajax 请求数据时,被请求的 URL 地址,就叫做数据接口(简称接口)。
  • 同时,每个接口必须有请求方式
  • 为了验证接口能否被正常被访问,我们常常需要使用接口测试工具,来对数据接口进行检测。
  • 好处:接口测试工具能让我们在不写任何代码的情况下,对接口进行调用和测试。
  • 接口测试工具下载:访问 PostMan 的官方下载网址https://www.getpostman.com/downloads/,下载所需的安装程序后,直接安装即可。
  • 接口的说明文档,它是我们调用接口的依据。
  • 好的接口文档包含了对接口URL,参数以及输出内容的说明,我们参照接口文档就能方便的知道接口的作用,以及接口如何进行调用。
  • 接口文档可以包含很多信息,也可以按需进行精简,不过,一个合格的接口文档,应该包含以下6项内容,从而为接口的调用提供依据:

接口名称:用来标识各个接口的简单说明,如登录接口,获取图书列表接口等。
接口URL:接口的调用地址。
调用方式:接口的调用方式,如GET 或 POST。
参数格式:接口需要传递的参数,每个参数必须包含参数名称、参数类型、是否必选、参数说明这4项内容。
响应格式:接口的返回值的详细描述,一般包含数据名称、数据类型、说明3项内容。
返回示例(可选):通过对象的形式,例举服务器返回数据的结构。

4、案例–图书馆管理

  • 用到的 css 库 bootstrap.css
  • 用到的 javascript 库 jquery.js
  • 用到的 vs code 插件 Bootstrap 3 Snippets

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <link rel="stylesheet" href="./lib/bootstrap.css" />
    <script src="./lib/jquery.js"></script>
  </head>
  <body style="padding: 15px">
    <!-- 面板 -->
    <div class="panel panel-primary">
      <div class="panel-heading">
        <h3 class="panel-title">添加新图书</h3>
      </div>
      <div class="panel-body form-inline">
        <div class="input-group">
          <div class="input-group-addon">书名</div>
          <input
            type="text"
            class="form-control"
            id="bookname"
            placeholder="请输入书名"
          />
        </div>
        <div class="input-group">
          <div class="input-group-addon">作者</div>
          <input
            type="text"
            class="form-control"
            id="author"
            placeholder="请输入作者"
          />
        </div>
        <div class="input-group">
          <div class="input-group-addon">出版社</div>
          <input
            type="text"
            class="form-control"
            id="publisher"
            placeholder="请输入出版社"
          />
        </div>
        <button type="button" id="btnAdd" class="btn btn-primary">添加</button>
      </div>
     
    </div>

     <!-- 表格 -->
      
     <table class="table table-bordered table-hover">
        <thead>
            <tr>
                <th>id</th>
                <th>书名</th>
                <th>作者</th>
                <th>出版社</th>
                <th>操作</th>
            </tr>
        </thead>
        <tbody id="tb">
        </tbody>
    </table>
    <script>
        $(function(){
            function getBookList(){
                //发起ajax请求获取图书列表数据
                $.get(
                    "http://www.liulongbin.top:3006/api/getbooks",
                    function(res){
                        //获取列表数据是否成功
                        if(res.status !=200){
                            return alert("获取数据失败")
                        };
                        //渲染页面结构
                        var rows=[];
                        $.each(res.data,function(i,item){
                            console.log(i,item);
                            //循环拼接字符串
                            rows.push("<tr><td>"+item.id+"</td><td>"+item.bookname+"</td><td>"+item.author+"</td><td>"+item.publisher+"</td><td><a href='javascript:;' class='del' data-id='"+item.id+"'>删除</a></td></tr>")
                        });
                        // 渲染表格结构
                        $("#tb").empty().append(rows.join(''))
                    }
                )
            }
            getBookList();

             // 通过代理的方式为动态添加的元素绑定点击事件
            $('#tb').on('click','.del',function(){
                var id = $(this).attr('data-id');
                // 发起ajax请求,根据id删除对应的图书数据
                $.get(
                    'http://www.liulongbin.top:3006/api/delbook',
                    {id:id},
                    function(res){
                        if(res.status!=200){
                            return alert('删除失败')
                        }
                        //删除成功后,重新加载图书列表
                        getBookList();
                    }
                )
            });

            $('#btnAdd').on('click',function(){
                var bookname=$('#bookname').val().trim();
                var author=$('#author').val().trim();
                var publisher=$('#publisher').val().trim();
                if(bookname.length <= 0 || author.length<=0|| publisher.length<=0){
                    return alert('请输入完整信息');
                }
                // 添加图书信息
                $.post(
                    'http://www.liulongbin.top:3006/api/addbook',
                    {
                        bookname:bookname,
                        author:author,
                        publisher:publisher
                    },
                    function(res){
                        if(res.status != 201){
                            return alert("添加失败");
                        }
                        // 添加成功后,刷新图书列表
                        getBookList();
                        // 清空文本框内容
                        $('#bookname').val('');
                        $('#author').val('');
                        $('#publisher').val('');
                    }
                )
            })
        })
    </script>
  </body>
</html>

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

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

相关文章

国民技术N32G430开发笔记(7)- Gpio EXTI中断的使用

GPIO EXTI中断的使用 1、N32G430C8L7_STB板卡带有三个用户按键&#xff0c;我们初始化key1 key2 按键&#xff0c;当按键按下时&#xff0c;在中断处理函数里输出我们的打印信息。 2、根据芯片手册上N32G430C8L7有24 条中断线&#xff0c;16条分配给GPIO使用&#xff0c;其余八…

中国移动发布COCA软硬一体片上计算架构,引领云计算市场下一个黄金十年

当前&#xff0c;数字经济发展已经成为改变全球竞争格局的关键力量&#xff0c;随着算力成为数字经济新引擎&#xff0c;算力规模持续增长&#xff0c;算力结构发生改变。主动拥抱智算浪潮&#xff0c;持续输出优质算力支撑数字中国建设&#xff0c;适配泛在化、异构化算力推动…

JavaWeb之过滤器Filter(通俗易懂版)

今天开发遇到了&#xff0c;简单记录一下&#xff01; 简介&#xff1a;Filter是JavaWeb三大组件之一&#xff08;Servlet程序、Listener监听器、Filter过滤器&#xff09; 作用&#xff1a;既可以对请求进行拦截&#xff0c;也可以对响应进行处理。 1、Filter中的三个方法 …

【无标题】c++异常机制的一些总结以及思考

在谈及c处理异常机制的方法之前我们不妨来回顾一下c语言是如何应对这块的。 终止程序&#xff0c;如assert&#xff0c;缺陷&#xff1a;用户难以接受。如发生内存错误&#xff0c;除0错误时就会终止程序。 返回错误码&#xff0c;缺陷&#xff1a;需要程序员自己去查找对应的…

深兰科技再获欧洲订单,中国造智能机器人出海“服务”西班牙

近日&#xff0c;经过包含关键技术、场景适配性、任务完成效率、产品操作便捷度等考核标准在内多轮综合对比&#xff0c;深兰科技突出重围&#xff0c;斩获西班牙一笔价值百万的智能室内清洁机器人采购订单。 多重问题显示&#xff0c;欧洲清洁市场亟待科技赋能 在当前的经济形…

VUE初级知识点总结

前言 近几年随着HTML5的普及&#xff0c;原来的jsp逐渐在被淘汰&#xff0c;而vue成了很多前端开发者的心仪的js框架&#xff0c;因为它相对于其他两大框架&#xff08;Angula、React&#xff09;更简单易学&#xff0c;当然了这里的简单易学指的是上手快&#xff0c;在不知道…

7.3 股票分析(project)

目录 第1关&#xff1a;涨幅和成交量 第2关 涨幅与最高价 第3关 跌幅与最低价 本关任务&#xff1a;完成涨幅和成交量股票分析。 相关知识 1.sorted()函数 2.集合运算 sorted()函数 sorted() 函数对所有可迭代的对象进行排序操作。 sorted(iterable, keyNone, reverseFal…

Linxu下性能指标采集工具之nmon工具的使用

前言 近期在测试JefLogTail&#xff0c;由于JefLogTail使用的是轮询的方式来监听文件夹&#xff0c;所以对cpu的消耗可能会高一些&#xff0c;所以在测试的时候着重关注CPU,Linux下查看CPU信息一般采用top命令来实时观察&#xff0c;但是这种对于只是通过观察数据的变化来评估…

跟着我学习 AI丨初识 AI

人工智能&#xff08;AI&#xff09;是一种模拟人类思维和行为的计算机技术&#xff0c;通过学习、推理和自我修正等方式&#xff0c;使机器能够模拟人类智能&#xff0c;并具有一定的自主决策能力。AI 可以被用于解决各种难题&#xff0c;如自动化、机器人、自动驾驶、语音识别…

【LeetCode】53. 最大子数组和

53. 最大子数组和&#xff08;中等&#xff09; 思路 这道题的状态设计和状态转移和 300. 最长递增子序列 类似。但是这里要求的是连续子数组&#xff0c;和子序列不同。 状态定义 首先定义 dp[i]&#xff1a;以 nums[i] 结尾的具有最大和的连续子数组。 状态转移方程 根据…

idea项目打成war包,出现路径问题(已解决)

参考文档&#xff1a; https://www.cnblogs.com/huaixiaonian/p/10521460.html 解释说明&#xff1a; 什么路径问题呢&#xff0c;就比如你们合作开发了一个项目&#xff0c;然后打成了一个war包&#xff0c;然后路径以前的是这种的 http://localhost:8080 就可以直接运行&…

《计算机网络——自顶向下方法》精炼

“An investment in knowledge pays the best interest.” - Benjamin 文章目录 分布式散列表&#xff08;键-值&#xff09;对散列函数逻辑上的实现环形DHT对等方扰动对等方离开对等方加入 UDP套接字编程客户端代码服务器端代码 分布式散列表 分布式散列表是一种数据库。集中…

锁相环的工作原理

锁相环是一个能够比较输入与输出信号相位差的反馈系统,利用外部输入的参考信号控制环路内部的振荡信号的频率和相位,使振荡信号同步至参考信号。 问题:既然是利用外部的参考时钟控制内部的振荡信号频率和相位使内部信号同步至外部参考,那为什么不直接用导线将外部参考信号…

微服务监控系统选型:Zabbix、Open-Falcon、Prometheus

监控系统的 7 大作用 实时采集监控数据&#xff1a;包括硬件、操作系统、中间件、应用程序等各个维度的数据。实时反馈监控状态&#xff1a;通过对采集的数据进行多维度统计和可视化展示&#xff0c;能实时体现监控对象的状态是正常还是异常。预知故障和告警&#xff1a;能够提…

08 【Sass语法介绍-混合指令】

1.前言 混合指令在 Sass 中也是一个比较常用的指令&#xff0c;在前面我们讲解的内容中有编写过混合指令 mixin &#xff0c;本节我们将详细讲解混合指令 mixin 的语法包括定义混合指令和引用混合指令等等&#xff0c;混合指令同样非常好用&#xff0c;我们一起来学习它吧。 …

python 离线安装pyinstaller

Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirrorhttps://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/下载各类anaconda Archived: Python Extension Packages for Windows - Christoph Gohlke (uci.edu)https://www.lfd.uci.edu/~g…

OpenGL(二)—— Hello World

目录 一、前言 二、渲染 三、GLSL 3.1 数据类型 3.2 编程步骤 四、渲染窗口 五、渲染三角形 5.1 顶点输入 5.2 顶点着色器 5.3 片段着色器 5.4 着色器链接 5.5 顶点属性 5.6 VAO管理顶点属性 5.7 画图 六、渲染四边形 6.1 元素缓冲对象EBO 6.2 运行 一、前言 G…

hbuilder打包IOS上线APP流程

iOS 系统打包流程 1. 创建唯一标识符 &#xff08;1&#xff09; 首先&#xff0c;申请苹果开发者账号。没有苹果开发者账号是无法进行 ios 打包上线的。 &#xff08;2&#xff09; 进入链接: https://developer.apple.com 这个网址&#xff0c;点击“account”并输入苹果开…

计算机含金量最高的赛事大全,考研和工作都能加持,这才是该参加的比赛

现在计算机相关的赛事数不胜数&#xff0c;但含金量较高的比赛却只有那么几项&#xff0c;做好了你现场就能找到工作&#xff0c;就算是考研也是益处很大&#xff0c;今天给大家总结出来。 就别再折腾一些费时费力但又不讨好的比赛了。 文章目录 一、ACM国际大学生程序设计竞赛…

【0基础学爬虫】爬虫基础之自动化工具 Playwright 的使用

大数据时代&#xff0c;各行各业对数据采集的需求日益增多&#xff0c;网络爬虫的运用也更为广泛&#xff0c;越来越多的人开始学习网络爬虫这项技术&#xff0c;K哥爬虫此前已经推出不少爬虫进阶、逆向相关文章&#xff0c;为实现从易到难全方位覆盖&#xff0c;特设【0基础学…