Ajax-AJAX请求的不同发送方式

news2024/11/25 0:38:27

🥔:你一定能成为想要成为的人

发送AJAX请求不同方式

    • 发送AJAX请求不同方式
      • 1、jQuery发送AJAX请求
      • 2、axios发送AJAX请求(重点)
      • 3、fetch发送AJAX请求

发送AJAX请求不同方式

1、jQuery发送AJAX请求

首先需要jquery的js文件,资源路径:jquery (v3.6.4) - jQuery 是一个高效、精简并且功能丰富的 JavaScript 工具库。它提供的 API 易于使用且兼容众多浏览器,这让诸如 HTML 文档遍历和操作、事件处理、动画和 Ajax 操作更加简单。 | BootCDN - Bootstrap 中文网开源项目免费 CDN 加速服务

使用jQuery发送get、post、和自定义请求头:

<!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
      crossorigin="anonymous"
      href="https://cdn.bootcdn.com/twitter-bootstrap/3.3.7/css/bootstrap.min.css"
    />
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
  </head>
  <body>
    <div class="container">
      <h2 class="page-header">jQuery发送AJAX请求</h2>
      <button class="btn btn-primary">GET</button>
      <button class="btn btn-danger">POST</button>
      <button class="btn btn-info">通用型方法ajax</button>
    </div>
    <script>
      //GET请求
      $("button")
        .eq(0)
        .click(function () {
          $.get(
            "http://127.0.0.1:8000/jquery-server",
            {
              //参数
              a: 100,
              b: 1000,
            },
            function (data) {
              //响应体
              console.log(data);
            },
            "json"
          ); //返回JSON类型
        });
      //POST请求
      $("button")
        .eq(1)
        .click(function () {
          $.post(
            "http://127.0.0.1:8000/jquery-server",
            {
              a: 100,
              b: 1000,
            },
            function (data) {
              //响应体
              console.log(data);
            }
          );
        });
      //通用型方法ajax
      $("button")
        .eq(2)
        .click(function () {
          $.ajax({
            //请求类型
            type: "GET",
            //url
            url: "http://127.0.0.1:8000/jquery-server",
            //参数
            data: { a: 100, b: 200 },
            //响应体结果设置
            dataType: "json",
            //成功的回调
            success: function (data) {
              console.log(data);
            },
            //超时时间
            timeout: 2000,
            //失败的回调
            error: function () {
              console.log("出错了!");
            },
            //头信息设置
            headers: {
              name: "lw",
              password: "lww",
            },
          });
        });
    </script>
  </body>
</html>

server.js:

//jQuery服务
app.all("/jquery-server", (request, response) => {
  //设置响应头 设置允许跨域
  response.setHeader("Access-Control-Allow-Origin", "*");
  //设置响应头 设置允许接收自定义请求头
  response.setHeader("Access-Control-Allow-Headers", "*");
  //设置响应
  const data = { name: "haha" };
  response.send(JSON.stringify(data));
});

2、axios发送AJAX请求(重点)

首先需要jquery的js文件,资源路径:点击此处

安装axios: 脚手架目录npm i axios
先配置服务端,类型改成all,然后允许接收自定义请求头

//axios服务
app.all("/axios-server", (request, response) => {
  //设置响应头 设置允许跨域
  response.setHeader("Access-Control-Allow-Origin", "*");
  //设置响应头 设置允许接收自定义请求头
  response.setHeader("Access-Control-Allow-Headers", "*");
  //设置响应
  const data = { name: "haha" };
  response.send(JSON.stringify(data));
});

axios发送请求成功的值是一个封装好的响应对象:

请添加图片描述

我们想要的响应数据藏在response.data

我们使用axios发送GET请求、POST请求和通用请求:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>axios发送AJAX请求</title>
    <link
      crossorigin="anonymous"
      href="https://cdn.bootcdn.com/twitter-bootstrap/3.3.7/css/bootstrap.min.css"
    />
    <script
      crossorigin="anonymous"
      src="https://cdn.bootcdn.net/ajax/libs/axios/1.3.6/axios.min.js"
    ></script>
  </head>
  <body>
    <button>GET</button>
    <button>POST</button>
    <button>AJAX</button>

    <script>
      const btns = document.querySelectorAll("button");
      //配置baseURL
      axios.defaults.baseURL = "http://127.0.0.1:8000";

      //GET请求
      btns[0].onclick = function () {
        //GET请求
        axios
          .get("/axios-server", {
            //url参数
            params: {
              id: 100,
              vip: 7,
            },
            //请求头信息
            headers: {
              name: "xixi",
              age: 18,
            },
          })
          .then((value) => {
            console.log("全部响应结果:", value);
            console.log("响应状态码:", value.status);
            console.log("响应状态字符串:", value.statusText);
            console.log("响应头信息:", value.headers);
            console.log("响应体:", value.data);
          });
      };

      //POST请求
      btns[1].onclick = function () {
        axios.post(
          "/axios-server",
          {
            //请求体
            username: "admin",
            password: "admin",
          },
          {
            //url参数
            params: {
              id: 200,
              vip: 8,
            },
            //请求头信息
            headers: {
              name: "heihei",
              age: 20,
            },
          }
        );
      };

      //axios发送通用请求
      btns[2].onclick = function () {
        axios({
          //请求方法
          method: "POST",
          //url
          url: "axios-server",
          //url参数
          params: {
            id: 300,
            vip: 9,
          },
          //请求头信息
          headers: {
            name: "hehe",
            age: 21,
          },
          //请求体参数
          data: {
            username: "admin",
            password: "admin",
          },
        }).then((response) => {
          console.log("全部响应结果:", response);
          console.log("响应状态码:", response.status);
          console.log("响应状态字符串:", response.statusText);
          console.log("响应头信息:", response.headers);
          console.log("响应体:", response.data);
        });
      };
    </script>
  </body>
</html>
  • 注意看他们之间的区别,多去浏览器f12查看他们信息分别放在哪。

3、fetch发送AJAX请求

fetch优点:它不像jquery和axios需要引入第三方库,它直接就能用,它就在window的内置对象中,直接就能用调用fetch函数。

fetch缺点:那就是返回的数据需要包两层promise,还有就是IE不兼容fetch。

server.js:

//fetch服务
app.all("/fetch-server", (request, response) => {
  //设置响应头 设置允许跨域
  response.setHeader("Access-Control-Allow-Origin", "*");
  //设置响应头 设置允许接收自定义请求头
  response.setHeader("Access-Control-Allow-Headers", "*");
  //设置响应
  const data = { name: "haha" };
  response.send(JSON.stringify(data));
});

fetch发送请求:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>fetch发送AJAX请求</title>
  </head>
  <body>
    <button>AJAX请求</button>

    <script>
      const btn = document.querySelector("button");
      btn.onclick = () => {
        fetch("http://127.0.0.1:8000/fetch-server?a=1&b=2", {
          //请求方法
          method: "POST",
          //请求头
          headers: { name: "www" },
          //请求体
          body: {
            username: "www",
            password: "123",
          },
        })
          .then((response) => {
            return response.json(); //把json字符串转换为js对象
          })
          .then((response) => {
            //第二个then处理上一个返回的正确结果
            console.log(response);
          });
      };
    </script>
  </body>
</html>

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

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

相关文章

Linux shell yes命令(不停输出换行的y)(不停输出换行的指定字符串)(脚本自动确认y)

文章目录 yes命令功能doc文档英文中文翻译完整文档 示例应用案例自动为脚本多次确认y yes命令功能 yes命令可以不断地输出换行的指定字符串&#xff0c;不加参数时&#xff0c;不断输出换行的“y”&#xff0c;有时我们需要执行一些需要用户键入“y”确认的脚本&#xff0c;但…

挖掘Java集合:深入探索List接口与HashSet

文章目录 引言LinkedList&#xff1a;双向链表的实现构造方法LinkedList中的常用方法HashSet&#xff1a;无序且唯一的集合HashSet的实现方式LinkedHashSet&#xff1a;有序且唯一可变长度参数结论 引言 在广阔的Java编程领域中&#xff0c;集合就如同宝库&#xff0c;提供了多…

Clickhouse学习系列——一条SQL完成gourp by分组与不分组数值计算

笔者在近一两年接触了Clickhouse数据库&#xff0c;在项目中也进行了一些实践&#xff0c;但一直都没有一些技术文章的沉淀&#xff0c;近期打算做个系列&#xff0c;通过一些具体的场景将Clickhouse的用法进行沉淀和分享&#xff0c;供大家参考。 首先我们假设一个Clickhouse数…

python基础3——流程控制

文章目录 一、操作符1.1 比较操作符1.2 逻辑操作符1.3 成员操作符1.4 身份操作符 二、流程控制2.1 条件判断2.2 循环语句2.2.1 for循环2.2.2 while循环 2.3 continue与break语句2.4 文件操作函数 三、函数3.1 定义函数3.2 作用域3.3 闭包3.4 函数装饰器3.5 内建函数 一、操作符…

一文看懂 D类数字功放原理及应用

他V hezkz17进数字音频系统研究开发交流答疑群(课题组) D类放大器工作在开关状态&#xff0c;作为控制元件的晶体管本身消耗功率较低&#xff0c;功放的效 率就高&#xff0c;可达 90%以上&#xff0c;因此能较大地降低能源损耗&#xff0c;减小放大器体积。D 类音 频功率放大器…

面试热题(最长上升子序列)

给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。例如&#xff0c;[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 输入&#xff1…

Docker容器监控(Cadvisor +Prometheus+Grafana)

环境部署&#xff0c;接着上一篇文章Docker容器部署&#xff08;Cadvisor InfluxDBGrafana&#xff09;开始 目录 1、先清理一下容器 2、部署Cadvisor 3、访问Cadvisor页面 4、部署Prometheus 5、准备配置 6、运行prometheus容器 7、访问prometheus页面 8、部署Grafan…

录屏怎么录声音?很简单,轻松操作!

“录屏的时候怎么把声音录进去呀&#xff1f;今天用手机录了一段视频&#xff0c;录完后打开却发现没有声音&#xff0c;真的服了&#xff0c;录了好久了&#xff0c;有没有人知道怎么才能录制声音呀&#xff1f;” 录屏是一种非常实用的技术&#xff0c;可以帮助我们记录屏幕…

PHPstudy配置伪静态步骤,tp5.1的框架

搜索mod_rewrite.so&#xff0c;然后去掉前面的#&#xff08;即放开注释&#xff09; 2.找到index.php 同级文件.htaccess&#xff08;没有就新建&#xff09; 这些是tp5.1自带的内容&#xff0c;把它注释掉&#xff0c;是错误的内容&#xff0c;添加下面的这段配置 #<If…

SIT1042AQ5V 供电,IO 口兼容 3.3V,±58V 总线耐压,CAN FD 待机模式总线收发器

等领域&#xff0c;支持 5Mbps 灵活数据速率 CAN FD &#xff0c;具有在总线与 CAN 协议控制器之间进行差分信号传 输的能力。 SIT1042AQ 为 SIT1042Q 芯片的升级版本&#xff0c;改善了总线信号的对称性&#xff0c;拥有更低的电磁辐射性能。 另外&#xff0c;SIT104…

ffplay数据结构分析(一)

本文为相关课程的学习记录&#xff0c;相关分析均来源于课程的讲解&#xff0c;主要学习音视频相关的操作&#xff0c;对字幕的处理不做分析 下面我们对ffplay的相关数据结构进行分析&#xff0c;本章主要是对PacketQueue的讲解 struct MyAVPacketList和PacketQueue队列 ffp…

线程池-手写线程池C++11版本(生产者-消费者模型)

本项目是基于C11的线程池。使用了许多C的新特性&#xff0c;包含不限于模板函数泛型编程、std::future、std::packaged_task、std::bind、std::forward完美转发、std::make_shared智能指针、decltype类型推断、std::unique_lock锁等C11新特性功能。 本项目有一定的上手难度。推…

浏览器是如何渲染页面的?

浏览器是如何渲染页面的&#xff1f; 当浏览器的网络线程收到 HTML 文档后&#xff0c;会产生一个渲染任务&#xff0c;并将其传递给渲染主线程的消息队列。 在事件循环机制的作用下&#xff0c;渲染主线程取出消息队列中的渲染任务&#xff0c;开启渲染流程。 整个渲染流程分…

对员工画饼out了,领导力之我的地盘TA做主

90后的员工为什么爱离职? 我想了一年&#xff0c;才嗅到一丝隐晦的内味。因为不结婚、不生娃、不买房、不买车&#xff0c;没压力&#xff0c;骂TA还敢顶嘴。 员工动力不足&#xff0c;没有干劲&#xff0c;宁愿熬夜打游戏&#xff0c;也不愿意多加班&#xff0c;到底是工资…

Springboot03--restful、swagger+orm/mybatis,mybatis-plus

参考这个方法配置&#xff0c;主要是我的springboot和swagger的版本号的问题 SpringBoot2.7.14集成Swagger3.0 (liqinglin0314.com) 常用的一些注解 放在controller里面 2. mybatisplus <!-- MyBatisPlus依赖--><dependency><groupId>com.baomidou</gr…

FL Studio低版本怎么免费升级:FL Studio升级要钱吗?

为了更好的服务国内FL Studio用户&#xff0c;FL Studio 官网提供了跨版本升级的服务&#xff0c;用户可以通过缴纳一定的费用&#xff0c;将自己已购买的入门版或其他非完整版的版本&#xff0c;升级为更高的版本&#xff0c;解锁更多的插件&#xff0c;而无需重新购买整套版本…

嵌入式开发学习(STC51-4-蜂鸣器)

内容 控制蜂鸣器发出声音&#xff0c;一段时间后关闭 蜂鸣器简介 蜂鸣器是一种一体化结构的电子讯响器&#xff0c;采用直流电压供电&#xff0c;广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件&#xff1b; 蜂…

算法通关村第六关——如何使用中序和后序来恢复一颗二叉树

1 树的基础知识 1.1 树的定义 树(Tree)&#xff1a;表现得是一种层次关系&#xff0c;为 n &#xff08; n ≥ 0 &#xff09; n&#xff08;n≥0&#xff09; n&#xff08;n≥0&#xff09;个节点构成的有限集合&#xff0c;当n0时&#xff0c;称为空树&#xff0c;对于任一…

锁定Mac的内置键盘,防止外接键盘时的误触

场景&#xff1a;把你的外接键盘放在mac上&#xff0c;然后打字时&#xff0c;发现外接键盘误触mac键盘&#xff0c;导致使用体验极差 解决方案&#xff1a;下载Karabiner-Elements这款软件&#xff0c;并给它开启相关权限。 地址&#xff1a;https://github.com/pqrs-org/Ka…

并网逆变器学习笔记6---三电平SVPWM下的连续和不连续调制

之前在学习中总结过一次DPWM策略选择&#xff1a;并网逆变器学习笔记5---三电平DPWM 但是对于三电平逆变器而言&#xff0c;如何从连续调制切换到不连续调制&#xff0c;存在一些疑惑点&#xff0c;下午闲来无事&#xff0c;把SVPWM下的连续调制和不连续调制的开关状态选择&am…