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

Ajax:原生ajax、使用FormData的细节问题,数据的载体

人生海海,山山而川,不过尔尔;空空而来,苦苦而过,了了而去

文章目录

          • 原生ajax
          • 使用FormData的细节问题
          • 数据的载体

原生ajax
  • 执行顺序
    1. 创建xhr对象 var xhr = new XMLHttpRequest()
    2. 调用xhr.open('请求方式', url)函数,设置请求方式和接口地址
    3. 调用xhr.send函数,用于发送请求
    4. 监听xhr.onreadystatechange事件,获取接口返回的结果
  • 关于readyState属性
    • readyState的值有5个,分别是0-4,该属性表示ajax请求过程中的5个不同的状态
    • 我们关心的是xhr.readyState===4的时候,因为这个时候浏览器端可以准确的完整的接收到服务器返回的数据
  • 带参数的GET请求
    • xhr.open('GET', 'http://www.liulongbin.top:3006/api/getbooks?id=3') 多个参数用&符号隔开
  • POST请求
    • 参数位置不同,POST请求时提交的数据要当做 xhr.send() 的参数
    • open和send方法之间,需要指定header头
  • 编码中文
    • url中不要出现中文,如查询字符串中有英文,我们最好使用js函数encodeURL()对中文进行编码处理
  • XMLHttpRequest Level 2新特性
    • xhr.onload:在完成ajax请求完毕的时候会触发
    • xhr.reponse:可以接收任何类型的结果
  • xhr配合ForData使用
    1. 获取表单数据
      • 找到表单的dom对象
      • 实例化FormData,参数是前面得到的dom对象
    2. ajax提交到接口
      • 指定POST方式提交到指定的接口
      • 不要写setquestHeader
      • 数据当做send的参数直接使用即可
使用FormData的细节问题
  • 注意事项
    • 表单各项(input/select/textarea)必须有name属性,因为FormData就是根据name属性来收集数据的
    • 找form表单的时候一定要用dom对象
    • 发送ajax请求的时候必须使用POST方式
    • 接口必须使用指定的接口
  • API
    • get('username'):判断FormData对象中的username的值
    • has('username'):判断FormData对象中是否有username
    • append('time',Data now()):向FormData对象中追加一条数据
数据的载体
  • JSON (JavaScript Object Notation )
    • 作用:json是一种超轻量级的数据交换格式 (实际上是JavaScript的子集)
    • 注意事项
      • 属性名必须要用双引号包裹
      • 字符串类型的值必须用双引号包裹
      • json中不能写注释
      • json的最外层必须是对象或数组格式
      • 不能使用undefined或函数作为json的值
    • 序列化:即把js对象转成json格式的字符串的过程,使用方法为 JSON.stringify()
      var xiaoming = {name: '小明',age: 12,gender: true,height: 165,grade: null,'middle-school': 'Middle School',skills: ['Javascript', 'Java', 'Python', 'Lisp']
      }
      var res = JSON.stringify(xiaoming)
      console.log(res)
      // 运行结果: {"name":"小明","age":12,"gender":true,"height":1.65,"grade":null,"middle-school":"Middle School","skills":["Javascript","Java","Python","Lisp"]}
      // 如果要输出好看一些的话, 可以加上参数,按缩进输出 JSON.stringify(xiaoming, null, ' ')
      // 运行结果:{"name": "小明","age": 14,"gender": true,"height": 1.65,"grade": null,"middle-school": "Middle School","skills": ["JavaScript","Java","Python","Lisp"]}
      // 第二个参数用于控制如何筛选对象的赋值,如果只想输出指定的属性,可以传入Array:JSON.stringify(xiaoming, ['name', 'skills'], ' ')
      // 运行结果:  {"name": "小明","skills": ["JavaScript","Java","Python","Lisp"]}
      // 其中第三个参数1.如果省略的话显示出来的值就没有分隔符,直接输出来2.如果是一个数字的话定义的是缩进几个字符,如果大于10,则默认为10,因为最大值为103.如果是一些转义字符,比如'\t',表示回车,那么它每行一个回车4.如果仅仅是字符串,就在每行输出值的时候就把这些字符串附加上去,最大长度也是10个字符
      
  • 反序列化:即把json格式的字符串转成js对象的过程,使用方法为 JSON.parse()
    var res = JSON.parse('[1,2,3,true]')
    console.log(res) // [1,2,3,true]
    var res = JSON.parse('{"name": "小明", "age": 14}')
    console.log(res) // {name: '小明', age:14}
    var res = JSON.parse('true')
    console.log(res) // true
    var res = JSON.parse('123.45')
    console.log(res) // 123.45
    // 还可以接收一个函数,用来转换解析出的属性
    var obj = JSON.parse('{"name":"小明","age":14}', function (key, value) {if (key === 'name') {return value + '同学'}return value
    })
    console.log(JSON.stringify(obj)) // {"name":"小明同学","age":14}
    

相关文章:

Ajax:原生ajax、使用FormData的细节问题,数据的载体

人生海海,山山而川,不过尔尔;空空而来,苦苦而过,了了而去 文章目录 原生ajax使用FormData的细节问题数据的载体 原生ajax 执行顺序 创建xhr对象 var xhr new XMLHttpRequest()调用xhr.open(请求方式, url)函数&#…...

【HuggingFace 如何上传数据集 (2) 】国内网络-稳定上传图片、文本等各种格式的数据

【HuggingFace 下载】diffusers 中的特定模型下载,access token 使用方法总结【HuggingFace 下载中断】Git LFS 如何下载指定文件、单个文件夹?【HuggingFace 如何上传数据集】快速上传图片、文本等各种格式的数据 上文的方法因为是 https 协议&#xf…...

GNOME桌面安装dock

Although GNOME Shell integration extension is running, native host connector is not detected. Refer documentation for instructions about installing connector. sudo yum -y install chrome-gnome-shell...

移动app测试有哪些测试类型?安徽软件测试中心分享

科技信息时代,移动app的出现为我们的生活及工作带来了极大的便利。一款app从生产到上线必不可少的就是测试阶段,app测试是保障产品质量和安全的有效手段,那么移动app测试有哪些测试类型呢?安徽软件测试中心又有哪些? 1、功能性测试   需…...

Android 10.0 截屏流程

通常未通过特殊定制的 Android 系统,截屏都是经过同时按住音量下键和电源键来截屏。本篇文章就只讨论使用这些特殊按键来进行截屏。 这里我们就要明白事件是在哪里进行分发拦截的。通过源码的分析,我们发现是在PhoneWindowManager.java 中。 PhoneWindow…...

Axure零基础深入浅出的讲解

在当今的互联网产品设计领域,原型设计已经成为了产品经理、设计师和开发者之间沟通的桥梁。而Axure作为一款功能强大、灵活易用的原型设计工具,正是很多产品经理的得力助手。无论你是产品经理新手,还是资深设计师,Axure都能帮助你…...

PyTorch求导相关

PyTorch是动态图,即计算图的搭建和运算是同时的,随时可以输出结果;而TensorFlow是静态图。 在pytorch的计算图里只有两种元素:数据(tensor)和 运算(operation) 运算包括了&#xf…...

Halcon基础-瓶盖带角度的OCR批量识别

Halcon基础-OCR识别 1、OCR识别素材2、创建路径文件3、Halcon代码实现4、运行效果5、资源获取 1、OCR识别素材 这里我准备了7张不同角度的OCR图片,如下所示: 2、创建路径文件 按照下图所示创建全部文件夹和文件: 01用来存放OCR识别原图 c…...

php语法学习

启动php 进入软件 打开文件:编写代码 $php true; $java false; var_dump($php);//输出变量细节 var_dump($java) 字符串 注意可以使用双引号也可以使用单引号 测试 $php "最好学web语言"; $java 脱胎于c语言; var_dump($php);//输出变量细节 var…...

JavaWeb合集22-Apache POI

二十二、Apache POI Apache POI是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是,我们可以使用POI在Java 序中对Miscrosoft Office各种文件进行读写操作。一般情况下,POI都是用于操作Excel文件。 使用场景:银行网银系统导出…...

DDD重构-实体与限界上下文重构

DDD重构-实体与限界上下文重构 概述 DDD 方法需要不同类型的类元素,例如实体或值对象,并且几乎所有这些类元素都可以看作是常规的 Java 类。它们的总体结构是 Name: 类的唯一名称 Properties:属性 Methods: 控制变量的变化和添加行为 一…...

MATLAB Simulink (二)高速跳频通信系统

MATLAB & Simulink (二)高速跳频通信系统 写在前面1 系统原理1.1 扩频通信系统理论基础1.1.1 基本原理1.1.2 扩频通信系统处理增益和干扰容限1.1.3 各种干扰模式下抗干扰性能 1.2 高速跳频通信系统理论基础1.2.1 基本原理1.2.2 物理模型 2 方案设计2…...

智能合约分享

智能合约练习 一、solidity初学者经典示例代码: 1.存储和检索数据: // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; // 声明 Solidity 编译器版本// 定义一个名为 SimpleStorage 的合约 contract SimpleStorage {// 声明一个公共状态变量 d…...

【MR开发】在Pico设备上接入MRTK3(二)——在Unity中配置Pico SDK

上一篇文档介绍了 【MR开发】在Pico设备上接入MRTK3(一)在Unity中导入MRTK3依赖 下面将介绍在Unity中导入Pcio SDK的具体步骤 在Unity中导入Pico SDK 当前Pico SDK版本 Unity交互SDK git仓库: https://github.com/Pico-Developer/PICO-Un…...

【Java】探秘正则表达式:深度解析与精妙运用

目录 引言 一、基本概念 1.1 元字符 1.2 预定义字符类 1.3 边界匹配符 1.4 数量标识符 1.5 捕获与非捕获分组 二、Java中的正则表达式支持 三、正则表达式的使用示例 3.1 匹配字符串 3.2 替换字符串 3.3 分割字符串 3.4 使用Pattern和Matcher 3.5 捕获组和后向…...

2.6.ReactOS系统中从内核中发起系统调用

2.6.ReactOS系统中从内核中发起系统调用 2.6.ReactOS系统中从内核中发起系统调用 文章目录 2.6.ReactOS系统中从内核中发起系统调用前言 前言 上面我们已经可以看到用户空间(R3)进行系统调用的全过程即两种方法的具体实现。 系统调用一般时从R3发起的…...

chat_gpt回答:python获取当前utc时间,将xml里时间tag里的值修改为当前时间

你可以使用 lxml 库来读取、修改 XML 文件中的某个标签的值,并将其保存为新的 XML 文件。以下是一个示例代码,展示如何获取当前的 UTC 时间,并将 XML 文件中的某个时间标签修改为当前时间。 示例代码: from lxml import etree f…...

机器学习-语言分析

机器学习 1.1人工智能概述 1.2.1 机器学习与人工智能,深度学习 深度学习->机器学习->人工智能; 人工智能:1950,实现自动下棋,人机对弈,达特茅斯会议->人工智能的起点,1956年8月。克劳…...

Oracle 常见索引扫描方式概述,哪种索引扫描最快!

一.常见的索引扫描方式 INDEX RANGE SCANINDEX FAST FULL SCANINDEX FULL SCAN(MIN/MAX)INDEX FULL SCAN 二.分别模拟使用这些索引的场景 1.INDEX RANGE SCAN create table t1 as select rownum as id, rownum/2 as id2 from dual connect by level<500000; create inde…...

字符串(3)_二进制求和_高精度加法

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 字符串(3)_二进制求和_高精度加法 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目…...

《神经网络:智能时代的核心技术》

《神经网络&#xff1a;智能时代的核心技术》 一、神经网络的诞生与发展二、神经网络的结构与工作原理&#xff08;一&#xff09;神经元模型&#xff08;二&#xff09;神经网络训练过程 三、神经网络的应用领域&#xff08;一&#xff09;信息领域&#xff08;二&#xff09;…...

pdf内容三张以上转图片,使用spire.pdf.free

一、依赖 <spire.pdf.free.version>9.13.0</spire.pdf.free.version><itextpdf.version>5.5.13</itextpdf.version><dependency><groupId>e-iceblue</groupId><artifactId>spire.pdf.free</artifactId><version>$…...

游戏、软件、开源项目和资讯

游戏 标题链接【白嫖正版游戏】IT之家喜加一website 软件 标题链接【白嫖正版软件】反斗限免website 开源项目 标题链接【Luxirty Search】基于Google搜索结果&#xff0c;屏蔽内容农场Github【Video2X】图片/视频超分工具Github 新闻资讯 标题链接分享10个 Claude 3.5 …...

Acrel-1000变电站综合自动化系统及微机在化工企业中的应用方案

文&#xff1a;安科瑞郑桐 摘要&#xff1a;大型化工企业供配电具有的集约型特点&#xff0c;化工企业内35kV变电站和10kV变电所数量大、分布广&#xff0c;对于老的大多大型及中型化工企业而言&#xff0c;其变电站或变电所内高压电气设备为旧式继电保护装置&#xff0c;可靠…...

[Linux] CentOS7替换yum源为阿里云并安装gcc详细过程(附下载链接)

前言 CentOS7替换yum源为阿里云 yum是CentOS中的一种软件管理器&#xff0c;通过yum安装软件&#xff0c;可以自动解决包依赖的问题&#xff0c;免去手工安装依赖包的麻烦。 yum使用了一个中心仓库来记录和管理软件的依赖关系&#xff0c;默认为mirrorlist.centos.org&#xf…...

在Java中创建多线程的三种方式

多线程的创建和启动方式 在Java中&#xff0c;创建多线程主要有以下三种方式&#xff1a; 继承Thread类实现Runnable接口使用Callable接口与Future 下面是这三种方式的简单示例&#xff0c;以及如何在主类中启动它们。 1. 继承Thread类 class MyThread extends Thread {Ov…...

洛谷 AT_abc374_c [ABC374C] Separated Lunch 题解

题目大意 KEYENCE 总部有 N N N 个部门&#xff0c;第 i i i 个部门有 K i K_i Ki​ 个人。 现在要把所有部门分为 AB 两组&#xff0c;求这两组中人数多的那一组的人数最少为多少。 题目分析 设这些部门共有 x x x 个人&#xff0c;则较多的组的人数肯定大于等于 ⌈ …...

力扣2528.最大化城市的最小电量

力扣2528.最大化城市的最小电量 题目解析及思路 题目要求找到所有城市电量最小值的最大 电量为给城市供电的发电站数量 因此每座城市的电量可以用一段区间和表示&#xff0c;即前缀和 二分最低电量时 如果当前城市电量不够,贪心的想发电站建立的位置&#xff0c;应该是在mi…...

【zookeeper】集群配置

zookeeper 数据结构 zookeeper数据模型结构&#xff0c;就和Linux的文件系统类型&#xff0c;看起来是一颗树&#xff0c;每个节点称为一个znode.每一个Znode默认的存储1MB的数据&#xff0c;每个Znode都有唯一标识&#xff0c;可以通过命令显示节点的信息每当节点有数据变化…...

YOLO11 目标检测 | 导出ONNX模型 | ONNX模型推理

本文分享YOLO11中&#xff0c;从xxx.pt权重文件转为.onnx文件&#xff0c;然后使用.onnx文件&#xff0c;进行目标检测任务的模型推理。 用ONNX模型推理&#xff0c;便于算法到开发板或芯片的部署。 备注&#xff1a;本文是使用Python&#xff0c;编写ONNX模型推理代码的 目…...

wordpress 百度 seo/新产品的推广销售方法

年初的时候老板火急火燎撒钱买了一台四路1080Ti服务器给实验室用作深度学习使用&#xff0c;结果火急火燎地买回来才发现很多深度学习框架对多GPU支持并不好&#xff0c;于是只能分开使用。想我也是经历过共用服务器的混乱&#xff0c;于是提议建立四个虚拟机&#xff0c;然后把…...

wordpress微博图床/域名查询备案

2019独角兽企业重金招聘Python工程师标准>>> 朴素贝叶斯分类器 一&#xff0c;生成词向量&#xff08;词集模型&#xff09;第一&#xff0c;假设这里有两个参数vocabList, inputSet。vocabList代表着包含很多无重复的词&#xff0c;词量足够大&#xff0c;inputSet…...

中国印花图案设计网站/完善的seo网站

node *proot;stack<node*>st;node *rNULL;while(p||!st.empty()){if(p){st.push(p);pp->l;}else{pst.top();if(p->r&&p->r!r){pp->r;}else{cout<<st.top()->data<<endl;st.pop();rp;pNULL;}}}...

企业网站托管哪家好/郑州百度搜索优化

先创建一个表,创建语句如下:create table member(id int(3),name varchar(8),pass varchar(25));1.向表member中增加一个新列email,mysql语句如下:alter table member add email varchar(50) not null;describe member;-----------------------------------------------| field…...

网站备案真实性核验委托书/腾讯企点app下载安装

这个搞得有点久&#xff0c;不过&#xff0c;还算完美解决。 主要是前端NGINX&#xff0c;后端也是NGINX。 前端的NGINX不好作相关的URL权限限制&#xff0c;因为所有的URL在CI里都要经过INDEX.PHP重定向。 并且&#xff0c;在后端NGINX作限制&#xff0c;更比前端安全。 我大约…...

十大小程序开发公司/seo培训师

参考链接&#xff1a; https://segmentfault.com/a/1190000012156828?utm_sourcetag-newest 这里说的很详细了&#xff0c;所以我就直接搬过来了&#xff0c;仅做笔记使用。 css选择器常见包括id&#xff08;#id&#xff09;、标签&#xff08;tag&#xff09;、class&#xf…...