AJAX基础与进阶

一、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. 初始化 设置请求方法和 urlxhr.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({//urlurl: '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',//urlurl: '/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.rhkb.cn/news/415152.html

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

相关文章

Java Excel转PDF(免费)

目前市面上 Excel 转 PDF 的组件较多&#xff1a; 收费&#xff1a;aspose、GcExcel、spire开源&#xff1a;jacob、itextpdf 其中收费的组件封装得比较好&#xff0c;代码简洁&#xff0c;转换的效果也很好&#xff0c;但收费也高得离谱&#xff1a; 为了成本考虑&#xff…

1、Django Admin学习模型

此专栏应用环境和模型基于此文 开发环境 系统&#xff1a;windows11 开发工具&#xff1a;vscode 开发语言&#xff1a;python 3.8 开发框架&#xff1a;django 3.2 数据库&#xff1a;mysql8.4.1 项目目录 settings 注册两个应用 INSTALLED_APPS [django.contrib.ad…

关于STC-ISP软件选项“下次下载用户程序时擦除用户EEPROM区”的质疑

1.以前&#xff0c;在用STC-ISP软件下载代码时&#xff0c;该选项一般都默认勾选&#xff01;见图1&#xff1b;因没用到该功能无视&#xff1b; 2.近日&#xff0c;首次下载需写入一些用户核心数据&#xff0c;以后谁升级代码下载都不能查看和更改这些数据&#xff01; 3.于…

eureka一

Eureka 什么是eureka eureka服务调用流程 springcloud技术栈应用 分布式理论 CAP CAP理想运行情况 CAP不理想运行情况 CAP取舍 BASE BASE原理 搭建单机注册中心 服务提供者 服务消费者 集群服务注册中心 eureka功能详解 核心功能演示 Eureka源码解析 lifecycle的start

[极客大挑战 2020]Greatphp1

知识点: 1. PHP原生类在CTF中的利用 2. <??> <> <?php echo?> 以及 <??> <> <?php ?> 的变形 3. 正则表达式的取反绕过 进入页面又是熟悉的php的代码审计. <?php error_reporting(0); class SYCLOVER {public $syc;public $l…

基于 R 语言的深度学习——简单回归案例

近年来深度学习在人工智能领域飞速发展&#xff0c;各行业的学者、研究人员纷纷涌入研究热潮。本文将从 R 语言角度来介绍深度学习并解决以下几个问题&#xff1a; 什么是深度学习&#xff1f; 相关深度学习包有哪些&#xff1f; 如何配置工作环境&#xff1f; 如何使用神经…

微服务--认识微服务

微服务架构的演变 1. 单体架构&#xff08;Monolithic&#xff09; 阶段描述&#xff1a;在单体应用时代&#xff0c;整个应用程序被设计为一个项目&#xff0c;并在一个进程内运行。这种架构方式开发简单&#xff0c;便于集中管理&#xff0c;但随着应用的复杂化&#xff0c…

【算法 动态规划 简单多状态 dp 问题】打家劫舍题型

打家劫舍题型 按摩师 (easy)解题思路代码 打家劫舍II &#xff08;medium&#xff09;解题思路代码 删除并获得点数&#xff08;medium&#xff09;解题思路代码 按摩师 (easy) 题目链接 该题是打家劫舍的变形 解题思路 状态表示 分析: 注意题目, 对于当天的预约, 可以接受…

C语言遇见的一些小问题

问题如下&#xff1a; 1&#xff1a;为什么这样的代码为报错 #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <algorithm> #include <cstdio> #include<string> #include<stdlib.h> using namespace std; int main() {int i …

mysql5.7 TIMESTAMP NOT NULL DEFAULT ‘0000-00-00 00:00:00‘ 换版8版本 引发的问题

mysql5.7 TIMESTAMP NOT NULL DEFAULT 0000-00-00 00:00:00 换版引发的问题 问题背景sql_mode上机演示5.78.4 问题背景 在项目mysql版本由5.7 换版到8.4版本后&#xff0c;我们进行回归测试时&#xff0c;却发现一个积年代码报错了&#xff0c;是数据库插入报的错 xxx can not…

华为IS-IS实验及配置

AR1配置 #进入ISIS进程 isis 1 #配置设备类型为Level-1is-level level-1 #定义区域和System-ID等信息network-entity 49.0001.0010.0000.0001.00 #ISIS邻居命名is-name AR1 #接口配置IP和启用ISIS interface GigabitEthernet0/0/0ip address 10.1.12.1 255.255.255.0 isis ena…

数仓基础(六):离线与实时数仓区别和建设思路

文章目录 离线与实时数仓区别和建设思路 一、离线数仓与实时数仓区别 二、实时数仓建设思路 离线与实时数仓区别和建设思路 ​​​​​​​一、离线数仓与实时数仓区别 离线数据与实时数仓区别如下&#xff1a; 对比方面 离线数仓 实时数仓 架构选择 传统大数据架构 …

Ribbon负载均衡底层原理

springcloude服务实例与服务实例之间发送请求&#xff0c;首先根据服务名注册到nacos&#xff0c;然后发送请求&#xff0c;nacos可以根据服务名找到对应的服务实例。 SpringCloudRibbon的底层采用了一个拦截器&#xff0c;拦截了openfeign发出的请求&#xff0c;对地址做了修…

【C++】将myString类中能够实现的操作都实现一遍

myString.h #ifndef MYSTERAM_H #define MYSTERAM_H #include <iostream> #include<cstring> using namespace std; class myString { private:char *str; //字符串int size; //字符串容量char error[20] "error"; public://无参构造myString():siz…

深入解析FPGA在SOC设计中的核心作用

在集成系统SoC设计中&#xff0c;CPU核心的嵌入至关重要&#xff0c;以实现软硬件的有效交互。此过程中涉及到功能IP&#xff08;如图像处理、无线通信等&#xff09;的验证和整合&#xff0c;利用硬件描述语言(HDL)来实现可编程逻辑(FPGA)&#xff0c;并通过验证技术提高设计效…

Django Admin对自定义的计算字段进行排序

通常&#xff0c;Django会为模型属性字段&#xff0c;自动添加排序功能。当你添加计算字段时&#xff0c;Django不知道如何执行order_by&#xff0c;因此它不会在该字段上添加排序功能。 如果要在计算字段上添加排序&#xff0c;则必须告诉Django需要排序的内容。你可以通过在…

【机器学习】神经网络、隐藏层的基本概念、如何选择隐藏层数量以及胶囊网络对神经网络的影响

引言 神经网络是机器学习的一种方法&#xff0c;它通过模拟人脑神经元的工作原理来构建算法 文章目录 引言一、神经网络1.1 定义1.2 主要组成部分1.3 工作原理1.4 应用1.5 类型1.6 优化算法1.7 总结 二、隐藏层2.1 定义2.2 隐藏层的作用2.3 隐藏层的数量和大小2.4 隐藏层的结构…

单片机-STM32 时钟(六)

1.时钟的概念 在我们单片机中&#xff0c;时钟主要是用于 提供一个工作的频率&#xff0c;时钟信号越大&#xff0c;设备执行的速度就越快。 时钟---处理器运行的频率---72MHZ Dbus--数据总线 AHB--总线桥 APB2--外设总线2&#xff08;时钟&#xff09; APB1--外设总线1&a…

基于Java+SpringBoot+Vue的植物健康系统

基于JavaSpringBootVue的植物健康系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345; 某信 gzh 搜索【智能编程小助手】获取项…

[C++11#44](一) 统一的列表初始化 | 声明 | STL中一些变化 | emplace的优化 | move

目录 0. 回忆 1.隐式类型转化 特性 1.统一的列表初始化 1.{}初始化 2.2 std::initializer_list 二、声明 1.auto 2.decltype 3.nullptr 宏定义的例子 使用 const 和 enum 替代宏 4. 范围 for 循环 5.final与override final 关键字 override 关键字 示例代码 智…