当前位置: 首页 > article >正文

【前端】前后端通信

前端开发主要完成的两件事:
1)界面搭建
2)数据交互
本知识页参考:
https://juejin.cn/post/6925296067378429960

0. XMLHttpRequest

  1. 客户端的一个API,为浏览器和服务器通信提供了一个便携通道。现代浏览器支持XMLHttpRequest API,如IE 7+、
    1. 创建XMLHttpRequest对象:在后台与服务器交换数据,创建XMLHttpRequest对象的方法如下
    var xhr = new XMLHttpRequest()
    
    1. 建立连接
    function createXHR() {var XHR = [function() { return new XMLHttpRequest() },function() { return new ActiveXObject ("Msxml2.XMLHTTP") },function() {return new ActiveXObject ("Msxml3.XMLHTTP")},function () { return new ActiveXObject ("Microsoft.XMLHTTP") }]var xhr = null// 尝试调用函数for (var i = 0; i <XHR.length; i++) {try {xhr = XHR[i]()} catch (e) {continue}break}return xhr
    }
    // 建立连接
    xhr.open(method, url, async, username, password)
    // 其中xhr是XMLHttp
    xhr.send(body) // 
    // 异步通信
    let xhr = createXHR()
    xhr.open("GET", "server.txt", "false")
    xhr.send(null)
    console.log(xhr.responseText) 
    
    1. 发送请求
      1. get请求
        1. 简单字符串,不适用大容量或加密数据
      2. post请求:发送任意类型、长度的数据,多用于表单提交,以send()方法传递而不是查询字符串
      
      
      1. 获取HTML字符串
       <table border="1" width="100%"><tr><td>RegExp.exec()</td>通用的匹配模式</tr><tr><td>RegExp.exec()</td></tr></table>
      
      1. 获取和设置头部消息
      var xhr = createXHR()
      var url = "server.txt"
      xhr.open()
      xhr.onreadystatechange = function() {if(xhr.readyState==4&&xhr.status==200) {console.log(xhr.getAllResponseHeaders())}
      }
      xhr.send(null)
      
      1. getResponseHeader()
      [{user:"css8", pass}]
      
      1. Header-name表示头部消息名称
        1. value表示消息的具体值
          let xhr = createXHR()
          let url = "server.txt"
          
        2. 使用post方法
          
          
        3. fetch()
        4. XMLHttpRequest
    2. 串行格式化
      1.

1. Ajax

使用AJAX(Asynchronous Javascript And XML),使用XMLHttpRequest 技术构建更复杂,动态的网页的编程实践。
XHR由微软引入,首次在请求时,用于与服务器交互。

  1. 特点:
    1. XHR:在不刷新页面的情况下,请求URL获取服务器数据,
  2. 除JS外,jQuery、Axios、vue-resource 都可以实现 Ajax 编程
  3. 共性

1.1 原生JS

  1. 使用方式
var url = 'https://api.github.com/users/chriscoyier/repos'
var xhr = new XMLHttpRequest()
xhr.open('GET', url, false)
xhr.onreadystatechange = function() {if(xhr.readyState === 4) {if(xhr.status === 200 || xhr.status === 304) {console.log('response:', xhr.response)}}
}
xhr.send()
  1. JS封装
var Ajax = {get: function(url, callback) {var xhr = new XMLHttpRequest()xhr.open('GET', url, false)xhr.onreadystatechange = function() {if(xhr.readyState === 4) {if(xhr.status === 200 || xhr.status === 304) {console.log(xhr.response)callback(xhr.response)}}}xhr.send()},post: function(url, data, callback) {var xhr = new XMLHttpRequest()xhr.open('POST', url, false)xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')xhr.onreadystatechange = function() {if (xhr.readyState === 4) {if (xhr.status === 200 || xhr.status === 304) {console.log(xhr.response)callback(xhr.response)}}}xhr.send(data)}
}

1.2 JQuery

  1. 实现Ajax的方法
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
<script>$(function(){const list = {}const url = ''$.ajax({type: "POST",contentType: "application/json;charset=UTF-8",url: url,data: JSON.stringify(list),success: res => console.log('res', res),error: err => console.log('err', err)})})
</script>
  1. vue-resource

1.3 Axios

  1. axios基本特性
    1.
  2. 基本用法
  3. 常用API
  4. axios参数传递
  5. axios响应结果
  6. axios全局配置
  7. axios拦截器

1.4 Promise

  1. 使用ES6的Promise完成GET
  2. 1
  3. 1

2. Fetch


3.

4. 写的好累啊!

5. 实时通信的实现

本部分知识点参考:https://blog.csdn.net/dyk11111/article/details/134007708

5.1 WebSocket

5.2 轮询(poll)

5.3 长轮询

相关文章:

【前端】前后端通信

前端开发主要完成的两件事&#xff1a; 1&#xff09;界面搭建 2&#xff09;数据交互 本知识页参考&#xff1a; https://juejin.cn/post/6925296067378429960 0. XMLHttpRequest 客户端的一个API&#xff0c;为浏览器和服务器通信提供了一个便携通道。现代浏览器支持XMLHttp…...

编程技能:格式化打印04,sprintf

专栏导航 本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏&#xff0c;故划分为两个专栏导航。读者可以自行选择前往哪个专栏。 &#xff08;一&#xff09;WIn32 专栏导航 上一篇&#xff1a;编程技能&#xff1a;格式化打印03&#xff0c;printf 回到目录…...

C语言基础(11)【函数1】

内容提要 函数 文章目录 内容提要函数函数的描述函数的分类相关概念函数的定义&#xff1a;定义&#xff1a;案例&#xff1a; 形参和实参形参&#xff08;形式参数&#xff09;实参&#xff08;实际参数&#xff09;案例&#xff1a; 函数的返回值案例&#xff1a; 函数 函数…...

R语言基础| 下载、安装

在此前的单细胞教程中&#xff0c;许多小伙伴都曾因为R语言基础不足而十分苦恼。R语言是一种开源的编程语言和软件环境&#xff0c;专门用于统计分析、图形表示和数据挖掘。它最初由Ross Ihaka和Robert Gentleman在1993年创建&#xff0c;旨在为统计学家和数据分析师提供一个广…...

【hive sql】窗口函数

参考 包括窗口函数在内的执行顺序 from & join --确定数据源 where --行级过滤 group by --分组 having --组级过滤 窗口函数 --计算窗口函数结果 select --选择列 distinct --去重 order by --最终排序&#xff08;可对窗口函数结果进行排序&#xff09; limit/offset -…...

Ubuntu24.04 交叉编译 aarch64 ffmpeg

ffmpeg 官网: https://ffmpeg.org文档: https://ffmpeg.org/documentation.html 编译参数说明: https://trac.ffmpeg.org/wiki/CompilationGuide/Generic在Linux下编译: https://trac.ffmpeg.org/wiki/CompilationGuide 下载页: https://ffmpeg.org/download.html 安装依赖 …...

《AI角色扮演反诈技术解析:原理、架构与核心挑战》

AI角色扮演反诈技术解析&#xff1a;原理、架构与核心挑战 研究目标 技术栈梳理&#xff1a; 系统总结AI角色扮演在执法场景中的实现路径&#xff0c;涵盖大型语言模型&#xff08;LLM&#xff09;、提示词工程&#xff08;Prompt Engineering&#xff09;、多模态交互链路等…...

微软的新系统Windows12未来有哪些新特性

在今年即将到来的重大设计升级中,苹果计划对其全线操作系统统一按年份命名,作为另一巨头微软的win12还远吗?win11和win10是微软现在正在用的主流版本,win11系统发布于2021年6月24日,win10系统发布于2015年7月29日。预计win12尝鲜版可能在2025年下半年或明年。 尽管win12还…...

树莓派超全系列教程文档--(54)如何使用rsync在计算机之间同步文件夹

如何使用rsync在计算机之间同步文件夹 使用 rsync 在计算机之间同步文件夹 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rsync 在计算机之间同步文件夹 您可以使用 rsync 在计算机之间同步文件夹。例如&#xff0c;您可以使用 rsync 将R…...

华为ICT和AI智能应用

在华为的业务布局中&#xff0c;AI智能创新则贯穿于华为多个业务领域&#xff0c;二者紧密相关&#xff0c;共同推动华为及相关行业的发展。以下是具体介绍&#xff1a; Techco转型 - 背景&#xff1a;随着5G - A、云、人工智能等技术的发展&#xff0c;运营商从传统连接服…...

ROS2与Unitree机器人集成指南

Tested systems and ROS2 distro systemsROS2 distroUbuntu 20.04foxyUbuntu 22.04humblesrc目录上级才可以colcon build git clone https://github.com/unitreerobotics/unitree_ros2 Install Unitree ROS2 package 1. Dependencies sudo apt install ros-humble-rmw-cyclon…...

在虚拟宇宙中低语——进程间通信,Linux命名管道的前世今生

文章目录 &#x1f30c; 序章&#x1f320; 一、命名管道的宿命与哲学1.1、创建及简单使用1.2、命名管道的工作原理1.3、命名管道与匿名管道的区别 2、命名管道的特点及特殊场景2.1、特点2.2、四种特殊场景 3、命名管道实操3.1、实现文件拷贝3.2、实现进程控制 小结 &#x1f3…...

Cursor 工具项目构建指南:Java 21 环境下的 Spring Boot Prompt Rules 约束

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 Cursor 工具项目构建指南:Java 21 环境下的 Spring Boot Prompt Rules 约束前言项目简…...

各个布局的区别以及示例

各个布局的区别以及示例 在前端开发中&#xff0c;常见的布局方式主要有以下几种&#xff0c;每种布局都有其适用场景和特点&#xff1a; 1. 普通文档流&#xff08;Normal Flow&#xff09; 特点&#xff1a;默认布局方式&#xff0c;元素按照HTML顺序依次排列。适用场景&am…...

什么是MVC?

导语&#xff1a; 在Java后端面试中&#xff0c;“MVC架构”是绕不开的基础话题。它不仅关乎项目的整体设计思路&#xff0c;更体现了候选人的架构理解能力与编码规范意识。本文将从面试官视角出发&#xff0c;结合高频问题、代码示例、答题技巧与加分项&#xff0c;带你全面吃…...

STM32的ADC简介

一、ADC简介 STM32的ADC是一种12位逐次逼近型模拟数字转换器。它具备18个通道&#xff0c;能够测量16个外部信号源以及2个内部信号源。各通道的A/D转换可以执行单次、连续、扫描或间断模式。转换结果可采用左对齐或右对齐的方式&#xff08;12位&#xff09;存储于16位数据寄存…...

Bash shell四则运算

文章目录 四则运算1. ‌expr 命令‌2. ‌$(( )) 表达式&#xff08;推荐&#xff09;‌3. ‌$[ ] 表达式&#xff08;已弃用&#xff09;‌4. ‌let 命令‌小数运算i 和 i 区别 四则运算 算术运算&#xff1a; - * / %&#xff08;取模&#xff0c;求余数&#xff09; Bash sh…...

(javaSE)Java数组进阶:数组初始化 数组访问 数组中的jvm 空指针异常

数组的基础 什么是数组呢? 数组指的是一种容器,可以用来存储同种数据类型的多个值 数组的初始化 初始化&#xff1a;就是在内存中,为数组容器开辟空间,并将数据存入容器中的过程。 数组初始化的两种方式&#xff1a;静态初始化&#xff0c;动态初始化 数组的静态初始化 初始化…...

力扣刷题Day 70:在排序数组中查找元素的第一个和最后一个位置(34)

1.题目描述 2.思路 方法1&#xff08;自己写的&#xff09;&#xff1a;一次二分查找找到等于target的一个元素索引axis&#xff0c;然后向左右延伸找边界。 方法2&#xff08;灵茶山艾府佬的闭区间二分查找写法&#xff09;&#xff1a;定义一个lower_bound()函数找到第一个…...

vue 多端适配之pxtorem

在 Vue 3 Vite 项目中使用 postcss-pxtorem 自动将 px 单位转换为 rem 单位&#xff0c;可以按照以下步骤配置&#xff1a; 一、基础版本 1. 安装依赖 首先安装必要的插件&#xff1a; npm install postcss postcss-pxtorem autoprefixer -D # 或 yarn add postcss postcs…...

图片压缩工具 | 图片属性详解及读取解析元数据

ℹ️ 图片信息及属性 基本属性 格式类型&#xff1a;JPEG、PNG、GIF、WEBP、BMP、TIFF等文件大小&#xff1a;以KB、MB等为单位的存储空间占用创建/修改日期&#xff1a;文件的元数据时间戳 视觉属性 尺寸/分辨率 宽度&#xff08;像素&#xff09;高度&#xff08;像素&…...

React---day8

9.6 不可变数据的力量 我们知道是不能够修改this.state里面的数据的 举个例子 export class App extends React.PureComponent{constructor(){super();this.state {userList:[{name : "tom" , age : 18},{name : "lily" , age : 20},{name : "tik…...

C# Onnx 动漫人物人脸检测

目录 效果 模型信息 项目 代码 下载 参考 效果 模型信息 Model Properties ------------------------- stride&#xff1a;32 names&#xff1a;{0: face} --------------------------------------------------------------- Inputs ------------------------- name&am…...

C++内存列传之RAII宇宙:智能指针

文章目录 1.为什么需要智能指针&#xff1f;2.智能指针原理2.1 RAll2.2 像指针一样使用 3.C11的智能指针3.1 auto_ptr3.2 unique_ptr3.3 shared_ptr3.4 weak_ptr 4.删除器希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力&#xff01; 智能指针是 C 中用于自动…...

PVE 虚拟机安装 Ubuntu Server V24 系统 —— 一步一步安装配置基于 Ubuntu Server 的 NodeJS 服务器详细实录1

前言 最近在基于 NodeJS V22 写一个全栈的项目&#xff0c;写好了&#xff0c;当然需要配置服务器部署啦。这个过程对于熟手来说&#xff0c;还是不复杂的&#xff0c;但是对于很多新手来说&#xff0c;可能稍微有点困难。所以&#xff0c;我把整个过程全部记录一下。 熟悉我…...

GitHub 趋势日报 (2025年06月03日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 2404 onlook 860 system-design-primer 380 nautilus_trader 372 agent-zero 357 …...

出现dev/nvmeOnip2 contains a file system with errors, check forced 解决方法

目录 前言1. 问题所示2. 原理分析3. 解决方法4. 彩蛋前言 爬虫神器,无代码爬取,就来:bright.cn Java基本知识: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)【Java项目】实战CRUD的功能整理(持续更新)1. 问题所示 出现如下问题: dev/nvmeOnip2 co…...

Vue3.5 企业级管理系统实战(二十二):动态菜单

在前几篇内容中已完成菜单、角色及菜单权限等相关开发&#xff0c;若要在左侧菜单根据用户角色动态展示菜单&#xff0c;需对 Sidebar 中的相关数据进行修改。鉴于其他相关方法及类型已在前文实现&#xff0c;本文不再重复阐述。 1 修改 Sidebar 组件 在 src/layout/componen…...

磨皮功能 C++/C的OpenCV 实现

磨皮功能 C/C的OpenCV 实现 前提条件 OpenCV 安装&#xff1a; 你需要正确安装 OpenCV 库。C 编译器&#xff1a; 如 G。 C 代码 #include <opencv2/opencv.hpp> #include <iostream> #include <string>// 使用标准命名空间 using namespace std; using …...

蓝牙防丢器应用方案

蓝牙防丢器通常由两个主要部分构成&#xff1a;一个小型装置&#xff0c;亦称为标签&#xff0c;以及一个与之配对的手机应用程序。该标签内置一个微型蓝牙芯片&#xff0c;能够与配对的手机应用程序进行通信。一旦标签与手机之间的连接中断&#xff0c;手机应用程序便会接收到…...