ajax基础

一:express框架

在终端输入node+js文件名

// 引入express
const express = require('express');
//创建应用对象
const app = express();
//创建路由规则
app.get('/',(request,response) => {//设置响应response.send('Hello Express');
});    // 监听3000端口
app.listen(8000,()=>{console.log("服务器已经启动");  // 启动成功后,在命令行中看到此消息
});

Ctrl+c结束服务器

二:ajax入门:

// 引入express
const express = require('express');
//创建应用对象
const app = express();
//创建路由规则
app.get('/server',(request,response) => {//设置响应头,设置允许跨域response.setHeader('Access-Control-Allow-Origin','*');//设置响应response.send('Hello ajax');
});    app.POST('/server',(request,response) => {//设置响应头,设置允许跨域response.setHeader('Access-Control-Allow-Origin','*');//设置响应response.send('Hello ajax post');
});  // 监听8000端口
app.listen(8000,()=>{console.log("服务器已经启动");  // 启动成功后,在命令行中看到此消息
});

 get请求

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>#result{width: 200px;height: 100px;border: 1px solid black;}</style>
</head>
<body><button>点击发送请求</button><div id="result"></div><script>//获取按钮元素const btn =document.getElementsByTagName('button')[0];const result = document.getElementById('result');//添加点击事件btn.onclick = function(){//1.创建对象const xhr = new XMLHttpRequest();//2.初始化xhr.open('GET','http://127.0.0.1:8000/server?a=100&b=200');//3. 发送请求xhr.send();//4.时间绑定//on when 当...时候//readystate 是xhr的一个属性,值有0-4,//分别代表请求未发送,请求发送中,请求发送完成,响应头部接收完成,响应数据接收完成//改变状态函数xhr.onreadystatechange = function(){//判断(服务端返回了所有的结果)if(xhr.readyState===4){//判断(状态码是否为200,即服务器返回了正确的数据)//响应状态码分别有200 404 500等if(xhr.status>=200&&xhr.status<300){//处理结果//获取状态码console.log(xhr.status);//状态状态字符串console.log(xhr.statusText);//返回所有响应头console.log(xhr.getAllResponseHeaders);//响应体console.log(xhr.response);}else{console.log('请求出错');}result.innerHTML=xhr.response;}}}</script>
</body>
</html>

post请求

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>POST请求</title><style>#result{width: 200px;height: 100px;border: 1px solid black;}</style>
</head>
<body><div id="result"></div><script>const result = document.getElementById("result");result.addEventListener("mouseover",function(){// console.log("mouseover");const xhr = new XMLHttpRequest();xhr.open("POST","http://127.0.0.1:8000/server");xhr.send();xhr.onreadystatechange=function(){if(xhr.readyState===4 && xhr.status===200){if(xhr.status>=200&&xhr.status<300){result.innerHTML=xhr.response;}}}})</script>
</body>
</html>

 设置请求头信息:

 服务器需要设置响应头,all可以接受任何的请求

response.setHeader('Access-Control-Allow-Headers','*');

设置允许跨域(自己命名的请求头信息)

app.all('/server',(request,response) => {//设置响应头,设置允许跨域response.setHeader('Access-Control-Allow-Origin','*');//设置响应头, 设置允许跨域的头部response.setHeader('Access-Control-Allow-Headers','*');//设置响应response.send('Hello ajax post');
});  

服务器端响应json数据

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>json</title><style>#result{width: 200px;height: 100px;border: 1px solid black;}</style>
</head>
<body><div id="result"></div><script>const result=document.getElementById('result');//绑定键盘按下事件window.onkeydown = function(){// console.log('test');//发送请求const xhr = new XMLHttpRequest();//设置响应体数据类型xhr.responseType='json';xhr.open('GET', 'http://127.0.0.1:8000/json-server');xhr.send();xhr.onreadystatechange = function(){if(xhr.readyState===4)if(xhr.status>=200 && xhr.status<300){// console.log(xhr.response);// result.innerHTML=xhr.response;//手动对数据转化// let data = JSON.parse(xhr.response);// console.log(data);// result.innerHTML=data.name;//自动转化console.log(xhr.response);result.innerHTML=xhr.response.name;}}}</script>
</body>
</html>

nodemon自动重启工具

 在终端中输入 npm install -g nodemon指令

安装完成之后只需要打node+tab就可以

ajaxIE的缓存问题

只需要加一个时间戳就可以

延迟请求

超过两秒请求取消

让网络离线,报异常

ajax手动取消

注意这里使用的是let xhr =null

重复请求问题

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

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

相关文章

免费实用在线AI工具集合 - 加菲工具

免费在线工具-加菲工具 https://orcc.online/ 在线录屏 https://orcc.online/recorder 时间戳转换 https://orcc.online/timestamp Base64 编码解码 https://orcc.online/base64 URL 编码解码 https://orcc.online/url Hash(MD5/SHA1/SHA256…) 计算 https://orcc.online/h…

UE5肉鸽游戏教程学习

学习地址推荐&#xff1a;UE5肉鸽项目实战教程_哔哩哔哩_bilibili

101页PDF | 德勤_XX集团信息化顶层规划设计信息化总体解决方案(限免下载)

一、前言 这份报告是一份关于集团信息化顶层规划设计的总体解决方案&#xff0c;旨在通过信息化转型提升集团管控和企业运营效率。报告回顾了项目的背景、目标和工作过程&#xff0c;分析了集团面临的内部和外部挑战&#xff0c;并提出了一系列解决方案&#xff0c;包括自上而…

L14.【LeetCode笔记】返回倒数第k个节点

目录 1.题目 2.分析 思路 代码 提交结果 1.题目 面试题 02.02. 返回倒数第 k 个节点 实现一种算法&#xff0c;找出单向链表中倒数第 k 个节点。返回该节点的值。 注意&#xff1a;本题相对原题稍作改动 示例&#xff1a; 输入&#xff1a; 1->2->3->4->5 和 …

【zookeeper03】消息队列与微服务之zookeeper集群部署

ZooKeeper 集群部署 1.ZooKeeper 集群介绍 ZooKeeper集群用于解决单点和单机性能及数据高可用等问题。 集群结构 Zookeeper集群基于Master/Slave的模型 处于主要地位负责处理写操作)的主机称为Leader节点&#xff0c;处于次要地位主要负责处理读操作的主机称为 follower 节点…

STM32端口模拟编码器输入

文章目录 前言一、正交编码器是什么&#xff1f;二、使用步骤2.1开启时钟2.2配置编码器引脚 TIM3 CH1(PA6) CH2 (PA7)上拉输入2.3.初始化编码器时基2.4 初始化编码器输入2.5 配置编码器接口2.6 开启定时器2.7获取编码器数据 三、参考程序四、测试结果4.1测试方法4.2串口输出结果…

【Mybatis】@Param注解 resultMap手动映射

文章目录 一、映射文件参数二、查询映射2-1 一对一2-2 一对多2-3 总结 一、映射文件参数 Param 注解官方文档解释 1、单个参数&#xff08;对象&#xff09;不使用注解 public int save(User user);<!-- 添加用户 --> <insert id"save" parameterType&quo…

正则表达式灾难:重新认识“KISS原则”的意义

RSS Feed 文章标题整理 微积分在生活中的应用与思维启发 捕鹿到瞬时速度的趣味探索 微积分是一扇通往更广阔世界的门&#xff0c;从生活中学习思维的工具。 数据库才是最强架构 你还在被“复杂架构”误导吗&#xff1f; 把业务逻辑写入数据库&#xff0c;重新定义简单与效率。…

C#基础上机练习题

21.计算500-800区间内素数的个数cn&#xff0c;并按所求素数的值从大到小的顺序排列&#xff0c;再计算其间隔加、减之和&#xff0c;即第1个素数-第2个素数第3个素数-第4个素数第5个素数……的值sum。请编写函数实现程序的要求&#xff0c;把结果cn和sum输出。 22.在三位整数…

【STM32】在 STM32 USB 设备库添加新的设备类

说实话&#xff0c;我非常想吐槽 STM32 的 USB device library&#xff0c;总感觉很混乱。 USB Device library architecture 根据架构图&#xff1a; Adding a custom class 如果你想添加新的设备类&#xff0c;必须修改的文件有 usbd_desc.cusbd_conf.cusb_device.c 需要…

多头数(head number);d_model、d_k;词嵌入维度之间的关系;多头是对不同维度的特征分开提取,意义在于将并行执行

目录 多头是对不同维度的特征分开提取,意义在于将并行执行 之后的每头提取的特征仅仅进行矩阵拼接 多头数(head number) d_model、d_k 词嵌入维度之间的关系 词嵌入的维度(d_model)决定了权重矩阵的形状 一、概念解释 二、关系举例说明 多头数,权重矩阵的长度和词…

Mac配置maven环境及在IDEA中配置Maven

Mac配置maven环境及在IDEA中配置Maven 1. 介绍 Maven是一款广泛用于Java等JVM语言项目的工具&#xff0c;它以项目对象模型&#xff08;POM&#xff09;为基础进行项目管理&#xff0c;通过POM文件来定义项目信息和依赖关系。同时&#xff0c;它也是构建自动化工具&#xff0…

Qt中2D绘制系统

目录 一、Qt绘制系统 1.1Qt绘制基本概念 1.2 绘制代码举例 1.3画家 1.3.1 QPainter的工作原理&#xff1a; 1.3.2 自定义绘制饼状图&#xff1a; 1.4画笔和画刷 1.4.1画笔 1.4.2 画刷填充样式 1.5 反走样和渐变 1.6绘制设备 1.7坐标变换 1.8QPainterPath 1.9绘制文…

运维Tips:Docker或K8s集群拉取Harbor私有容器镜像仓库配置指南

[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ] Docker与Kubernetes集群拉取Harbor私有容器镜像仓库配置 描述:在现在微服务、云原生的环境下,通常我们会在企业中部署Docker和Kubernetes集群,并且会在企业内部搭建Harbor私有镜像仓库以保证开发源码安全,以及加快…

2022年计算机网络408考研真题解析

第一题&#xff1a; 解析&#xff1a;网络体系结构-数据链路层 在ISO网络参考模型中&#xff0c;运输层&#xff0c;网络层和数据链路层都实现了流量的控制功能&#xff0c;其中运输层实现的是端到端的流量控制&#xff0c;网络层实现的是整个网络的流量控制&#xff0c;数据链…

鸿蒙NEXT开发案例:文字转拼音

【引言】 在鸿蒙NEXT开发中&#xff0c;文字转拼音是一个常见的需求&#xff0c;本文将介绍如何利用鸿蒙系统和pinyin-pro库实现文字转拼音的功能。 【环境准备】 • 操作系统&#xff1a;Windows 10 • 开发工具&#xff1a;DevEco Studio NEXT Beta1 Build Version: 5.0.…

使用sk-learn 理解TF-IDF

TF-IDF&#xff08;Term Frequency-Inverse Document Frequency&#xff09;是一种常用的文本挖掘技术&#xff0c;用于评估一个词语在一组文档中的重要性。它广泛应用于信息检索和文本挖掘中&#xff0c;尤其是在搜索引擎和推荐系统中。 组成部分 TF-IDF 由两个部分组成&…

【漏洞复现】|百易云资产管理运营系统/mobilefront/c/2.php前台文件上传

漏洞描述 湖南众合百易信息技术有限公司&#xff08;简称&#xff1a;百易云&#xff09;成立于2017年是一家专注于不动产领域数字化研发及服务的国家高新技术企业&#xff0c;公司拥有不动产领域的数字化全面解决方案、覆盖住宅、写字楼、商业中心、专业市场、产业园区、公建、…

网络层协议IP

对于网络层我们直接通过IP协议来了解其内容 一.IP协议 首先我们先来了解几个概念&#xff1a; 主机&#xff1a;配有IP地址&#xff0c;但是不进行路由控制的设备 路由器&#xff1a;配有IP地址&#xff0c;同时进行路由控制的设备 节点&#xff1a;主机和路由器的统称 所以现在…

道品智能科技移动式水肥一体机:农业灌溉施肥的革新之选

在现代农业的发展进程中&#xff0c;科技的力量正日益凸显。其中&#xff0c;移动式水肥一体机以其独特的可移动性、智能化以及实现水肥一体化的卓越性能&#xff0c;成为了农业领域的一颗璀璨新星。它不仅改变了传统的农业灌溉施肥方式&#xff0c;更为农业生产带来了高效、精…