AJAX基础与进阶

news2024/12/28 4:23:56

一、express基本使用

1. 在最外层启动终端,添加文件

2. 创建 express 框架

// 1. 引入express
const express = require('express');

//  2. 创建应用对象
const app = express();

// 3. 创建路由规则
//request 是对请求报文的封装
//response 是对响应报文的封装
app.get('/' , (express,request)=>{
  // 设置响应
  response.send('HELLO EXPRESS');
});

// 4. 监听端口启动服务
app.listen(8000, ()=>{
  console.log("服务已启动,8000 端口监听中....");
});

3. 右击这里点开在终端打开

4. 输入node express基本使用·js

5. 打开浏览器 搜索网址127.0.0.1:8000

注意:这三个文件都要有,一个没有都不可以

二、原生AJAX

1. 前端准备

2.服务端准备 (express框架)

tip :8000端口已经被占用

在node中按Ctrl C 关闭八千端

回到原来终端,在用node 文件名,实现运行

tip :看到 xhr 一般要想到ajax 

3. get

响应头只要是2开头的都表示成功

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>AJAX GET 请求</title>
    <style>
        #result{
            width:200px;
            height:100px;
            border:solid 1px #90b;
        }
    </style>
</head>
<body>
    <button>点击发送请求</button>
    <div id="result"></div>

    <script>
        //获取button元素
        const btn = document.getElementsByTagName('button')[0];
        const result = document.getElementById("result");
        //绑定事件
        btn.onclick = function(){
            //1. 创建对象
            const xhr = new XMLHttpRequest();
            //2. 初始化 设置请求方法和 url
            xhr.open('GET', 'http://127.0.0.1:8000/server?a=100&b=200&c=300');
            //3. 发送
            xhr.send();
            //4. 事件绑定 处理服务端返回的结果
            // on  when 当....时候
            // readystate 是 xhr 对象中的属性, 表示状态 0 1 2 3 4
            // change  改变
            xhr.onreadystatechange = function(){
                //判断 (服务端返回了所有的结果)
                if(xhr.readyState === 4){
                    //判断响应状态码 200  404  403 401 500
                    // 2xx 成功
                    if(xhr.status >= 200 && xhr.status < 300){
                        //处理结果  行 头 空行 体
                        //响应 
                        // console.log(xhr.status);//状态码
                        // console.log(xhr.statusText);//状态字符串
                        // console.log(xhr.getAllResponseHeaders());//所有响应头
                        // console.log(xhr.response);//响应体
                        //设置 result 的文本
                        result.innerHTML = xhr.response;
                    }else{

                    }
                }
            }


        }
    </script>
</body>
</html>

4.get请求中设置参数

在 url 后面缀参数,用 问号 分隔,多个参数之间用 & 分隔

5.post

js代码修改之后,需要重新调用后台,Ctrl C关闭之前端口,重新启用新端口 

6. post请求中设置参数

7. 设置请求头

8.JSON

注意:send( )只能接受字符串类型,想要传递对象等其他类型,则必须进行转换

1. 黄框中的响应头,可以设置任意的响应头,自定义的也可以

2. 红框中,将对象转变成字符串,使得send可以传递对象

获取复杂的字符串数据

9. IE缓存

针对 IE 缓存的 JS 代码

HTML代码

10. 请求超时和网络异常处理

timeout 超时取消(超时的话,取消该操作)

11. 取消请求

用 abort

12. 重复发送请求

一旦结果是false,就不会发送新的请求

三、jQuery 中的AJAX

1. get 与 post

加 json 会变为对象,不加的话处理完会变成字符串

        $('button').eq(0).click(function(){
            $.get('http://127.0.0.1:8000/jquery-server', {a:100, b:200}, function(data){
                console.log(data);
            },'json');
        });

        $('button').eq(1).click(function(){
            $.post('http://127.0.0.1:8000/jquery-server', {a:100, b:200}, function(data){
                console.log(data);
            });
        });

2. 通用方法

将响应体从字符串变为对象

 

   <script>
        $('button').eq(0).click(function(){
            $.get('http://127.0.0.1:8000/jquery-server', {a:100, b:200}, function(data){
                console.log(data);
            },'json');
        });

        $('button').eq(1).click(function(){
            $.post('http://127.0.0.1:8000/jquery-server', {a:100, b:200}, function(data){
                console.log(data);
            });
        });

        $('button').eq(2).click(function(){
            $.ajax({
                //url
                url: 'http://127.0.0.1:8000/jquery-server',
                //参数
                data: {a:100, b:200},
                //请求类型
                type: 'GET',
                //响应体结果
                dataType: 'json',
                //成功的回调
                success: function(data){
                    console.log(data);
                },
                //超时时间
                timeout: 2000,
                //失败的回调
                error: function(){
                    console.log('出错啦!!');
                },
                //头信息
                headers: {
                    c:300,
                    d:400
                }
            });
        });

    </script>

四、axios

 1. 发送AJAX请求

① get

② post

1. 先url 2. 再请求体 3. 再其他配置

③ 通用方式

 btns[2].onclick = function(){
            axios({
                //请求方法
                method : 'POST',
                //url
                url: '/axios-server',
                //url参数
                params: {
                    vip:10,
                    level:30
                },
                //头信息
                headers: {
                    a:100,
                    b:200
                },
                //请求体参数
                data: {
                    username: 'admin',
                    password: 'admin'
                }
            }).then(response=>{
                //响应状态码
                console.log(response.status);
                //响应状态字符串
                console.log(response.statusText);
                //响应头信息
                console.log(response.headers);
                //响应体
                console.log(response.data);
            })
        }

五、fetch发送AJAX请求

想要单独只获取到响应体结果,用如下代码

六、跨域

1. 同源策略

【案例】

2. JSONP

 

① 【案例】

JS

HTML

② 发送请求

为了防止报错,可以加一个这个

注意一定要加参数 callback = ?

JS 

HTML

3. CORS

 

在服务端接口设置一个响应头就可以实现跨域

后面用 * 对所有的网页都好使(通配)

好啦~本次的分享到这里就结束啦~~~我们下次不见不散~~~

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

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

相关文章

021集—— 数据的大小端序转换——C#学习笔记

整形数据的大小端序转换&#xff1a; 代码如下&#xff1a; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace ConsoleApp1 {class a {public static int EndianReverse(int oldvalue) {//in…

微电网光储充用什么电能表?

背景 在可再生能源的需求不断增加&#xff0c;以及能源转型的推进&#xff0c;储能技术的重要性日益凸显。储能计量表作为储能系统的关键组成部分&#xff0c;对于监测、评估和管理储能系统性能具有重要作用。 在新能源发电领域&#xff0c;如分布式光伏、风电等&#xff0c;…

PMP–冲刺–十大领域易考点三大项目流程敏捷中的角色职责与3个工件高频考点考试技巧

文章目录 十大知识领域易考点--题干关键词一、整合管理二、范围管理三、进度管理四、成本管理五、质量管理六、资源管理七、沟通管理八、风险管理九、采购管理十、干系人管理 考试中的三大项目流程一 、变更流程二 、风险流程三 、收尾流程 敏捷中的角色职责与3个工件--题干关键…

汽车功能安全--TC3xx SMU之看门狗alarm处理

目录 1. TC3xx WDT速览 2. TC3xx SMU Watchdog Alarm 2.1 Watchdog Alarm处理流程 2.2 Recovery Timer详解 2.3 NMI里可以做什么&#xff1f; 3.小结 1. TC3xx WDT速览 根据相关文档描述&#xff0c;TC3xx看门狗总体架构如下&#xff1a; 它内部总共实现了两类Watchdog&…

EasyUI textbox 修改字体样式

EasyUI textbox 修改字体样式 现象 后端代码如下 <input id"statusName" name"statusName" disabled"disabled" class"easyui-textbox" style"width: 80%;color: red;"/>发现直接在style中写css不起作用 问题原因 …

随即近似与随机梯度下降

一、均值计算 方法1&#xff1a;是直接将采样数据相加再除以个数&#xff0c;但这样的方法运行效率较低&#xff0c;要将所有数据收集到一起后再求平均。 方法2&#xff1a;迭代法 二、随机近似法: Robbins-Monro算法&#xff08;RM算法&#xff09; g(w)是有界且递增的 …

PDF转换器,真心推荐这几款

PDF转换器&#xff0c;在现代办公环境中&#xff0c;PDF文件格式因其高保真性和跨平台兼容性而广受欢迎。但在实际工作中&#xff0c;我们常常需要将PDF文件转换为其他格式&#xff0c;这就需要用到PDF转换器。市场上的PDF转换器种类繁多&#xff0c;功能各异&#xff0c;如何选…

SpringCloud中什么是服务雪崩,常见的解决方案有哪些?(面试版)

雪崩&#xff1a;微服务调用链路中某个服务的故障&#xff0c;导致整个链路中的所有微服务都不可用。&#xff08;其实就是一个服务的问题 导致 另一个访问它的服务出问题&#xff09; 常见的解决方案&#xff1a; 1. 请求限流&#xff1a;限制访问 微服务请求(接口) 的并发…

OBCE实验指导手册V3 (4012问题分析手动实践)

实验环境 oceanbase 企业版V3 1-1-1 实验步骤 步骤1 创建MySQL 租户 ob_mysql&#xff0c;租户资源规格大小为 1C2G CREATE RESOURCE UNIT memory_test MAX_CPU 1, MAX_MEMORY 2G, MAX_IOPS 128,MAX_DISK_SIZE 10G, MAX_SESSION_NUM 64, MIN_CPU1, MIN_MEMORY2G, MIN_IOPS128;…

C++基础【字符串】(Ac-Wing)

字符串加空格 #include <iostream> #include <cstring> #include <algorithm>using namespace std;int main() {string s;getline (cin, s);for (int i 0; i < s.size(); i )cout << s[i] << " "; }字符串插入 #include<bits/…

通过旋转、平移求取矩形顶点坐标

前言 旋转和平移是几何变换中两个基本的操作&#xff0c;它们可以用来改变图形的位置和方向 一、旋转 旋转是指将图形绕某一点&#xff08;通常是原点或中心点&#xff09;旋转一定的角度。旋转会改变图形的方向&#xff0c;但不会改变其形状或大小。 在二维空间中&#xf…

材料力学:5.2 纯弯曲时的正应力

(1)曲率与弯矩之间的关系 图5.2.10静力关系 建立如图5.2.10&#xff08;c&#xff09;所示的xyz坐标&#xff0c;设工件截面的弯矩为 M M M &#xff0c;其与外力偶矩 M e M_e Me​ 等值反向。设截面处工件的曲率半径为 ρ \rho ρ &#xff0c;该工件的弹性模量为 E E …

springsecurity快速入门

Spring Security 是一个功能强大且高度可定制的安全框架&#xff0c;主要用于保护基于 Spring 的应用程序。它提供了一整套用于身份验证、授权、加密、会话管理等功能的工具和 API&#xff0c;从而帮助开发者快速、有效地保护应用程序。 Configuration EnableWebSecurity pu…

YOLO系列和RT-DETR转onnx和tensorrt,测FPS

RT-DETR(RT-DETR: DETRs Beat YOLOs on Real-time Object Detection) 和YOLOv8等在最后加nms RT-DETR转onnx和tensorrt和 RT-DETR转onnx和tensorrt 步骤流程&#xff1a; 1. nvidia驱动&#xff0c;cuda&#xff0c;cudnn三者的版本是相互对应的&#xff0c;必须要确保版本匹…

有什么简单方便的cad编辑器?2024快速进行cad编辑的软件合集

有什么简单方便的cad编辑器&#xff1f;2024快速进行cad编辑的软件合集 在建筑、工程、设计等领域&#xff0c;CAD&#xff08;计算机辅助设计&#xff09;软件是必不可少的工具。然而&#xff0c;面对复杂的CAD文件&#xff0c;有时我们只需要简单的编辑功能&#xff0c;而不…

nginx配置代理https端口的要点

今天配置了一个nginx代理端口&#xff0c;从http转成https的过程&#xff0c;刚开始以为很复杂&#xff0c;后面发现其实就那几个关键点&#xff0c;配置好了&#xff0c;就可以直接跳转 server的监听端口 我们常规nginx监听的端口都是http协议的&#xff0c;没有特殊说明&am…

Javascript实现笛卡儿积算法

在根据商品属性计算SKU时&#xff0c;通常会对商品不同选项的不同属性进行笛卡儿积运算。 function cartesian(elements) {if (!Array.isArray(elements))throw new TypeError();var end elements.length - 1,result [];function addTo(curr, start) {var first elements[s…

电话催收的优劣势

电话催收相比其他催收方式有哪些优势和劣势&#xff1f; 电话催收是催收业务这个场景最常用的一个方式&#xff0c;因为它无可替代。唯一还有催回欠款可能的&#xff0c;就是上门催&#xff0c;那成本太高了&#xff0c;一般不会选择。 优势方面 电话催收的主要优点包括成本低…

C语言实现SHA-256算法校验文件(win32-API)

一、前言 在数字化时代&#xff0c;信息安全与数据完整性成为了不可忽视的关键议题。在众多保障数据完整性的方法中&#xff0c;散列函数扮演着至关重要的角色。SHA-256&#xff08;Secure Hash Algorithm 256&#xff09;作为一种先进的散列算法&#xff0c;以其高度的安全性…

【C++】stack、queue、priority_queue的模拟实现

目录 一、stack &#x1f31f;stack的简单介绍 &#x1f31f;stack的基本使用 &#x1f31f;stack的模拟实现 &#x1f31f;stack模拟实现的完整代码 &#x1f31f;容器适配器 二、queue &#x1f31f;queue的简单介绍 &#x1f31f;queue的基本使用 &#x1f31f;q…