首页
学习
活动
专区
圈层
工具
发布

你真的会使用XMLHttpRequest吗?

看到标题时,有些同学可能会想:“我已经用xhr成功地发过很多个Ajax请求了,对它的基本操作已经算挺熟练了。”...从图中可以看到: IE8/IE9、Opera Mini 完全不支持xhr对象 IE10/IE11部分支持,不支持 xhr.responseType为json 部分浏览器不支持设置请求超时,即无法使用...原因1:W3C的 xhr 标准中做了限制,规定客户端无法获取 response 中的 Set-Cookie、Set-Cookie2这2个字段,无论是同域还是跨域请求; 原因2:W3C 的 cors...以下3种情况下值都为null:请求未完成、请求失败、请求成功但返回数据无法被正确解析时 如何追踪ajax请求的当前状态 在发一个ajax请求后,如果想追踪请求当前处于哪种状态,该怎么做呢?...注意:只有xhr处于OPENED状态,才能调用xhr.setRequestHeader()和xhr.send(),否则会报错 2 HEADERS_RECEIVED(已获取响应头) send()方法已经被调用

1.8K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    XMLHttpRequest使用指南大全

    以下是我认为对Ajax较为准确的解释:(摘自what is Ajax) AJAX stands for Asynchronous JavaScript and XML....XMLHttpRequest Level 1主要存在以下缺点: 受同源策略的限制,不能发送跨域请求; 不能发送二进制文件(如图片、视频、音频等),只能发送纯文本数据; 在发送和获取数据的过程中,无法实时获取进度信息...从图中可以看到: IE8/IE9、Opera Mini 完全不支持xhr对象 IE10/IE11部分支持,不支持 xhr.responseType为json 部分浏览器不支持设置请求超时,即无法使用xhr.timeout...原因1:W3C的 xhr 标准中做了限制,规定客户端无法获取 response 中的 Set-Cookie、Set-Cookie2这2个字段,无论是同域还是跨域请求; 原因2:W3C 的 cors 标准对于跨域请求也做了限制...以下3种情况下值都为null:请求未完成、请求失败、请求成功但返回数据无法被正确解析时 如何追踪ajax请求的当前状态 在发一个ajax请求后,如果想追踪请求当前处于哪种状态,该怎么做呢?

    1.5K30

    什么是Ajax以及ajax请求的步骤

    大家好,又见面了,我是你们的朋友全栈君。 什么是Ajax以及ajax请求的步骤 1.Ajax是什么? Asynchronous JavaScript & XML。Ajax是web开发的一种技术。...`HTTP`请求状态变化的函数; (4)发送`HTTP`请求; (5)获取异步调用返回的数据; (6)使用JavaScript和DOM实现局部刷新。...4.readyState状态码 0:请求未初始化 1:服务器连接已建立 2:请求已接收 3:请求处理中 4:请求已完成,且响应已就绪 5.http状态码(status) 200:(成功) 403:...发送`HTTP`请求; (5)获取异步调用返回的数据; (6)使用JavaScript和DOM实现局部刷新。...请求已接收 3:请求处理中 4:请求已完成,且响应已就绪 http状态码(status)

    2.6K20

    全面分析前端的网络请求方式

    一、前端进行网络请求的关注点 大多数情况下,在前端发起一个网络请求我们只需关注下面几点: 传入基本参数( url,请求方式) 请求参数、请求参数类型 设置请求头 获取响应的方式 获取响应头、响应状态、响应结果...对象所处的状态, XMLHttpRequest对象总是位于下列状态中的一个: |值|状态|描述 |-|-|-| |0 | UNSENT |代理被创建,但尚未调用 open() 方法。...然后我发现这里polyfill的实现和MDN-使用Fetch以及很多资料是不一致的: mdn: 默认情况下,fetch 不会从服务端发送或接收任何 cookies 于是我分别实验了下使用 polyfill...这也说明了,在 fetch执行完毕后,不能直接在 response中获取到返回值而必须调用 text()、json()等函数才能获取到返回值。...,从 fetch()返回的 Promise 不会被标记为 reject, 即使该 HTTP 响应的状态码是 404 或 500。

    2.2K40

    异步编程Ajax的详解,并对其进行封装整理

    对于Ajax,肯定很多小伙伴都听过甚至用过了,那么没听过的也不用着急,本文会对Ajax进行讲解,其次,一定还有一些人只用过JQuery封装好了的Ajax却对原生的Ajax并不了解,那么也不用着急,本文从最基本的...) 三、Ajax的使用 Ajax的基本流程:创建XHR对象 => 发送数据 => 接收数据 (1)状态码 既然Ajax涉及到前后端的数据交互,那么我们就先来简单的看一下几种类型的状态码,如下表: 状态码...服务端返回的XML DOM文档 status HTTP状态码 statusText HTTP状态码说明 readyState xhr对象的请求响应阶段 既然我们要获取服务端返回的数据,我们就要知道服务端是何时返回数据的...status 属性,看看状态码是否为 200,当上述都成立了,我们再去 responseText 属性 或 responseXML 属性中获取响应数据 xhr.onreadystatechange =...,所以我们可以借鉴它,甚至尽可能地去模仿它进行封装,在这之前,我们得先了解JQuery中Ajax的使用 (1)JQuery中的Ajax 这里我找来了几段使用JQuery发送Ajax请求的代码,如下所示:

    2K20

    Ajax 概述

    通过 AJAX 可以在浏览器中向服务器发送异步请求 最大的优势:无刷新获取数据。...XML 被设计用来传输和存储数据 XML 和 HTML 类似,不同的是 HTML 中都是预定义标签,而 XML 中没有预定义标签, 全都是自定义标签,用来表示一些数据 例如: 比如说我有一个学生数据:...服务器内部错误,无法完成请求 // 判断(服务端返回了所有的结果) if (xhr.readyState === 4) { //判断响应码 200 404 403...console.log(xhr.statusText);//状态字符串 // console.log( xhr.getAllResponseHeaders);//所有响应头 2.7...ajax 请求 浏览器端接收到响应 (1) 一般请求: 浏览器一般会直接显示响应体数据, 也就是我们常说的刷新/跳转页面 (2) ajax请求: 浏览器不会对界面进行任何更新操作, 只是调用监视的回调函数并传入响应相关数据

    17210

    前后端交互的弯弯绕绕

    在这个状态下,我们可以通过then()方法设置的回调函数来获取这个值;已拒绝(rejected):如果异步操作失败,或者在执行过程中抛出了一个错误,Promise对象就会变为拒绝状态 在这个状态下...:把回调函数嵌套代码,改成Promise链式调用结构* 需求:获取默认第一个省,第一个市,第一个地区并展示在下拉菜单中*/let province = ''// 1....Axios 3分钟让你学会axios在vue项目中的基本用法、Axios使用方法详解,从入门到进阶 当作进阶观看: ajax与XHR的理解和使用原生ajax、jquery-ajax、axios与fetch...的区别|优缺点草稿区:黑马程序员前端AJAX入门到实战 ✅黑马的官方的文档确实细致,细致到都不用我在补充都能看懂了,是不是我的技术提升的原因呢?...-Ajax详解_ajax解析 不懂哪里来的这么多观看Axios3分钟让你学会axios在vue项目中的基本用法Axios使用方法详解,从入门到进阶 当作进阶观看:ajax与XHR的理解和使用原生ajax

    67720

    高级前端:详解手写原生Ajax的实现

    对于Ajax,肯定很多小伙伴都听过甚至用过了,那么没听过的也不用着急,本文会对Ajax进行讲解,其次,一定还有一些人只用过JQuery封装好了的Ajax却对原生的Ajax并不了解,那么也不用着急,本文从最基本的...) 三、Ajax的使用 Ajax的基本流程:创建XHR对象 => 发送数据 => 接收数据 (1)状态码 既然Ajax涉及到前后端的数据交互,那么我们就先来简单的看一下几种类型的状态码,如下表: 状态码...服务端返回的XML DOM文档 status HTTP状态码 statusText HTTP状态码说明 readyState xhr对象的请求响应阶段 既然我们要获取服务端返回的数据,我们就要知道服务端是何时返回数据的...status 属性,看看状态码是否为 200,当上述都成立了,我们再去 responseText 属性 或 responseXML 属性中获取响应数据 xhr.onreadystatechange =...,所以我们可以借鉴它,甚至尽可能地去模仿它进行封装,在这之前,我们得先了解JQuery中Ajax的使用 (1)JQuery中的Ajax 这里我找来了几段使用JQuery发送Ajax请求的代码,如下所示:

    2K20

    Web前端-Ajax基础技术(下)

    效果 readyState 0 xhr被创建,未调用open()方法 1 open()方法被调用,建立了连接 2 send()方法被调用,可以获取状态行和响应头 3 响应体下载中,responseTest...= function() { if(this.readyState === 4) { // 获取响应状态码 console.log(this.status); // 获取响应状态描述...() 创建一个对象 jQuery.get() 使用一个http get请求从服务器加载数据 jQuery.getJSON() jQuery.getScript() GET请求从服务器加载并执行一个 JavaScript...文件 jQuery.post() 请求从服务器加载数据 跨域: 同源,域名,协议,端口,完全相同,同源的相互通过ajax的方式进行请求。...作者简介 达叔,理工男,简书作者&全栈工程师,感性理性兼备的写作者,个人独立开发者,我相信你也可以!阅读他的文章,会上瘾!,帮你成为更好的自己。长按下方二维码可关注,欢迎分享,置顶尤佳。

    2.7K30

    Web基础知识

    在进行Ajax开发时,经常使用GET方式或POST方式发送请求。 GET方式适合从服务器获取数据。 POST方式适合向服务器发送数据。需要设置内容的编码格式,告知服务器用什么样的格式来解析数据。...3.4 处理服务器返回的信息 获取Ajax的当前状态:readyState属性 readyState属性用于获取Ajax的当前状态,状态值有5种形式。...从网络安全角度来看,域是安全的边界,每个域都有自己的安全策略,不同域之间是隔离的,除非建立信任关系,否则无法互相访问。...当需要发送多个JSONP请求时,无法区分每个回调函数。 为了解决这两个问题,我们可以编写代码实现自动生成一个随机的回调函数名,并在请求时将函数名传递给服务器,服务器在返回结果中调用指定的函数。...6.2 FormData Ajax向服务器发送数据时,如何收集表单中的数据? 以前的方法:通过DOM操作手动获取用户在表单中填写的值。

    85610

    《深入浅出Node.js》:Node异步编程解决方案 之 ES6 Promise

    Promise/Deferred模式直接促使JQuery 1.5版本的ajax重写,使得ajax调用中即使不调用success()、error()等方法,ajax也能执行,这样的调用方式比预先传入回调用起来更舒服...从语法上说,Promise就是一个可以从它内部获取异步操作结果的对象。Promise提供统一的API,以确保各种异步操作都可以用同样的方法进行处理。 Promise对象的特点: 对象状态不受外部影响。...只有异步操作的结果才可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。 一旦状态改变,就不会再变,任何时候都可以得到这个结果。...本行代码处于同步执行流中。 // 同步执行流2 // 我是被成功异步读取的txt文本数据 Promise构造函数接收一个函数作为参数,这个函数又有两个参数,分别是resolve和reject。...,将Promise对象的状态从“未完成”变为“失败”(即从 pending 变为 rejected),在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。

    99430

    前端架构师之01_JavaScript_Ajax

    在进行Ajax开发时,经常使用GET方式或POST方式发送请求。 GET方式适合从服务器获取数据。 POST方式适合向服务器发送数据。需要设置内容的编码格式,告知服务器用什么样的格式来解析数据。...3.4 处理服务器返回的信息 获取Ajax的当前状态:readyState属性 readyState属性用于获取Ajax的当前状态,状态值有5种形式。...从网络安全角度来看,域是安全的边界,每个域都有自己的安全策略,不同域之间是隔离的,除非建立信任关系,否则无法互相访问。...当需要发送多个JSONP请求时,无法区分每个回调函数。 为了解决这两个问题,我们可以编写代码实现自动生成一个随机的回调函数名,并在请求时将函数名传递给服务器,服务器在返回结果中调用指定的函数。...6.2 FormData Ajax向服务器发送数据时,如何收集表单中的数据? 以前的方法:通过DOM操作手动获取用户在表单中填写的值。

    68010

    AJAX——百闻不如一见

    AJAX 一、AJAX简介 什么是 AJAX ? AJAX = 异步 JavaScript 和 XML。 AJAX 是一种用于创建快速动态网页的技术。...然而,在以下情况中,请使用 POST 请求: 无法使用缓存文件(更新服务器上的文件或数据库) 向服务器发送大量数据(POST 没有数据量限制) 发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠...第四步:注册监听器 在xmlHttp对象的一个事件上注册监听器:onreadystatechange xmlHttp对象一共有5个状态:   0状态:刚创建,还没有调用open()方法;   1...状态:请求开始,调用open()方法,但是没有调用send()方法;   2状态:调用完了send()方法;   3状态:服务器已经开始响应,但是响应未结束;   4状态:服务器响应结束; 得到xmlHttp...= getXMLHttpRequest(); // 处理响应结果,创建回调函数,根据响应状态动态更新页面 xhr.onreadystatechange

    69310

    ES6②

    下一步,必须调用遍历器对象的next方法,使得指针移向下一个状态。...从语法上说,Promise是一个对象,从它可以获取异步操作的消息。Promise提供统一的API,各种异步操作都可以用同样的方法进行处理。 Promise对象有以下两个特点。...(1)对象的状态不受外界影响。Promise对象代表一个异步操作,有三种状态:Pending(进行中)、Resolved(已完成,又称Fulfilled)和Rejected(已失败)。...只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。这也是Promise这个名字的由来,它的英语意思就是“承诺”,表示其他手段无法改变。...(2)一旦状态改变,就不会再变,任何时候都可以得到这个结果。Promise对象的状态改变,只有两种可能:从Pending变为Resolved和从Pending变为Rejected。

    51410

    Ajax向服务器端发送请求

    Ajax是一种异步进程,程序不会等待异步代码执行完后再继续执行后续代码 当后续代码需要调用Ajax返回的数据时,可能会有数据未返回的问题 Ajax的实现步骤 创建Ajax对象 var xhr =...(); Ajax状态值 在Ajax请求执行的过程中每一步都对应一个状态码 数值 意义 0 请求没有初始化,没有调用 open() 1 请求已经建立,但是没有发送 send() 2 请求已经发送 3 请求正在处理...,通常响应中已经有部分数据可以使用了 4 响应已经完成,可以获取并使用服务器响应了 xhr.readyState;//获取Ajax状态值 onreadstatechange事件 Ajax状态码发生变化的时候触发...// 当Ajax状态码发生变化时触发事件 xhr.onreadystatechange = function () { // 判断当Ajax状态码为4时 if (xhr.readyState...请求可能出错,妨碍服务器的处理 5xx 服务端错误,服务器不能正确执行一个正确的请求 低版本浏览器缓存问题 由于缓存的存在,在请求地址不发生改变的情况下,只有第一次的数据请求会发送到服务器端,后续的请求都会从浏览器的缓存中获取

    2.7K20
    领券