首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

XMLHttpRequest使用指南大全

Ajax和XMLHttpRequest 我们通常将Ajax等同于XMLHttpRequest,细究起来它们两个是属于不同维度2个概念。...从上面的解释中可以知道:ajax是一种技术方案,不是一种新技术。...所以我用一句话来总结两者关系:我们使用XMLHttpRequest对象来发送一个Ajax请求。...以下3种情况下值都为null:请求未完成、请求失败、请求成功返回数据无法被正确解析 如何追踪ajax请求的当前状态 在发一个ajax请求后,如果想追踪请求当前处于哪种状态,该怎么做呢?...这样判断是有坑儿,比如当返回http状态码不是200,而是201,请求虽然也是成功并没有执行成功回调逻辑。所以更靠谱判断方法应该是:当http状态码为2xx或304才认为成功。

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

你真的会使用XMLHttpRequest吗?

Ajax和XMLHttpRequest 我们通常将Ajax等同于XMLHttpRequest,细究起来它们两个是属于不同维度2个概念。...从上面的解释中可以知道:ajax是一种技术方案,不是一种新技术。...xhr.timeout 部分浏览器不支持xhr.responseTypeblob 细说XMLHttpRequest如何使用 先来看一段使用XMLHttpRequest发送Ajax请求简单示例代码...以下3种情况下值都为null:请求未完成、请求失败、请求成功返回数据无法被正确解析 如何追踪ajax请求的当前状态 在发一个ajax请求后,如果想追踪请求当前处于哪种状态,该怎么做呢?...这样判断是有坑儿,比如当返回http状态码不是200,而是201,请求虽然也是成功并没有执行成功回调逻辑。所以更靠谱判断方法应该是:当http状态码为2xx或304才认为成功。

1.5K30

如何使用 jq 接收 blob 数据

如何使用 jq 接收 blob 数据 ⭐️ 更多前端技术和知识点,搜索订阅号 JS 菌 订阅 目前 jq 用的人还是挺多,在一些简单促销 h5 页面,用 jq 去实现一些简单功能还是比较方便。...本文展示如何用 JQ 去请求一个 blob 对象 img 图片并渲染到页面上 默认 jq ajax 对象中 dataType 无法设置返回资源为 blob 那么就需要手动设置,使其能够最终请求一个...= 'blob' xhr.send() 这种方法直接使用了原生 ajax 另外还可以使用 xhr 或 xhrFields 配置来修改返回资源类型 重写 xhr jq ajax 方法提供了一个...function () { var xhr = new XMLHttpRequest() xhr.responseType = 'blob' return...ajax 方法中 xhrFields 属性,定义响应类型为 blob jQuery.ajax({ url: 'https://httpbin.org/image/png', cache:

3.3K30

关于 Blob

Blob URL 形式呢 从 ==URL.createObjectURL(blob)== 方法来看,首先要拿到存储这个视频原始数据 Blob 对象 平时我们请求接口可以使用 axios / ajax...应当是返回图片和视频数据,这种情况只要设置正确==responseType==才能拿到我们想要格式数据 // responseType 参数如下: // text 字符串;blob Blob对象;arraybuffer...([start[, end[, contentType]]]) start 可选 这个参数代表 Blob下标,表示第一个会被会被拷贝进 Blob 字节起始位置。...-1对应字节将会是被拷贝进Blob 最后一个字节。...它默认值就是它原始长度(size) contentType 可选 给 Blob 赋予一个文档类型。这将会把它 type 属性设为被传入值。

2.6K10

前端下载文件5种方法对比

form表单提交 这是以前常使用传统方式,毕竟那个年代,没那么多好用特性呀。...基于上面描述,如果你尝试下载跨域链接,那么其实 download效果就会没了,跟不设置 download表现一致。即浏览器能预览还是会预览,而不是下载。...优点 能解决不能直接下载浏览器可浏览文件 缺点 得已知下载文件地址 不能下载跨域下浏览器可浏览文件 有兼容性问题,特别是IE 不能进行鉴权 利用Blob对象 该方法较上面的直接使用 a标签 download...因为发请求已设置返回数据类型为 Blob类型( xhr.responseType='blob'),所以 target.response就是一个 Blob对象,打印出来会看到两个属性 size和 type...如果发送请求不设置 xhr.responseType='blob',默认ajax请求会返回 DOMString类型数据,即字符串。

6.7K63

使用Promise封装一个 Ajax

前提 观看该文章之前,你需要具备知识有: Promise使用,包含 Promise#then,Promise#catch,Promise.resolve,Promise.reject; XHR 使用...你可以从URL获取数据,而无需让整个页面刷新。这允许网页在不影响用户操作情况下更新页面的局部内容。在 Ajax 编程中 XMLHttpRequest 被大量使用。 ?..."arraybuffer" response 是一个包含二进制数据 JavaScript ArrayBuffer 。 "blob" response 是一个包含二进制数据 Blob 对象 。...使用此响应类型,响应中值仅在 progress 事件处理程序中可用,并且只包含上一次响应 progress 事件以后收到数据,而不是自请求发送以来收到所有数据。...XMLHttpRequest.response 只读 返回一个 ArrayBuffer、Blob、Document,或 DOMString,具体是哪种类型取决于 XMLHttpRequest.responseType

1.9K11

XMLHttpRequest Level 2 使用指南

* 传送和接收数据,没有进度信息,只能提示有没有完成。   * 受到"同域限制"(Same Origin Policy),只能向同一域名服务器请求数据。...八、接收二进制数据(方法B:responseType属性) 从服务器取回二进制数据,较方法是使用新增responseType属性。如果服务器返回文本数据,这个属性值是"TEXT",这是默认值。...较浏览器还支持其他值,也就是说,可以接收其他格式数据。 你可以把responseType设为blob,表示服务器传回是二进制对象。   ...var xhr = new XMLHttpRequest();   xhr.open('GET', '/path/to/image.png');   xhr.responseType = 'blob...var blob = new Blob([xhr.response], {type: 'image/png'}); 注意,是读取xhr.response,而不是xhr.responseText。

1K90

聊聊JS二进制家族:Blob、ArrayBuffer和Buffer

事实上,前端很少涉及对二进制数据处理,即便如此,我们偶尔总能在角落里看见它们身影。...简单说:在JS中,有两个构造函数 File 和 Blob, 而File继承了所有Blob属性。 所以在我们看来,File对象可以看作一种特殊Blob对象。...下面是一个Blob例子,可以看到它很短 blob:d3958f5c-0777-0845-9dcf-2cb28783acaf 和冗长Base64格式Data URL相比,Blob URL长度显然不能够存储足够信息...通过ArrayBuffer格式读取Ajax请求数据 通过xhr.responseType = "arraybuffer" 指定响应数据类型 在onload回调里打印xhr.response...前端 const xhr = new XMLHttpRequest(); xhr.open("GET", "ajax", true); xhr.responseType = "arraybuffer

5.8K31

【笔记】618- 读《你不知道 Blob》笔记

注意:** Blob 对象是不可改变**,但是可以进行分割,并创建出新 Blob 对象,将它们混合到一个 Blob 中。...从互联网下载数据 在实现“从互联网下载数据”方法,我们使用 createObjectURL 显示图片,在请求互联网图片时,我们有两种方式: 使用 XMLHttpRequest ; 使用 fetch ;...Blob 类型只有 slice 方法,用于返回一个 Blob 对象,包含了源 Blob 对象中指定范围内数据。...其他区别 需要使用写入/编辑操作使用 ArrayBuffer,否则使用 Blob 即可; Blob 对象不可变,而 ArrayBuffer 可以通过 TypedArrays 或 DataView 操作...URL 并不是所有浏览器都支持通过 XMLHttpRequest 获取源数据

3.3K40

Vue(JavaScript)下载文件方式汇总

会跳转界面,对于跨域请求download属性会失效,也就是说无法自定义下载文件名 window.URL+blob 下载文件 由于上面是方法会打开界面,所以我们需要对下载链接进行一些处理,比如转为...blob格式: // 这里需要发送一次请求将下载地址里文件转为blob格式,进行下载(发送请求同样会存在跨域问题,如果跨域的话需要在nginx配置代理) const blob = await fetch...请求转为blob格式: const x = new window.XMLHttpRequest() x.open('GET', '下载链接', true) x.responseType = 'blob'...blob格式,所以自然少不了跨域问题,并且blob格式无法在手机端浏览器下载,所以建议和上面的配合使用,手机端用上面的url方法下载,电脑端用blob 下载文字 如果是文字的话,则无需再发送请求,可直接将文字转为...会跳转界面 Iframe下载 iframe下载不会出现向a标签那样跳转问题,但是iframe兼容性较差,反正我在测试中没成功过 const url = '下载地址'; const iframe

2.1K10

前端实现文件下载所有方式

a.href='文件链接' a.setAttribute('download', '文件名'); //a.download='文件名' a.click(); 三.js中ajax...实现音频或者视频不跳转进行文件下载 写代码思路 先请求音频链接,再把返回值转换成二进制,再根据他二进制对象生成链接,再创建a标签,点击a标签 //这是vue里面的写普通页面也差不多 <script...$axios({ method: 'get', url: row.src, responseType: 'blob' //这个不能少,让response二进制形式,如果你按照网上教程不设置这个将返回值进行...BLOB([])进行处理可能会出现解析错误 }).then(response => { const href = URL.createObjectURL(response.data); //根据二进制对象创造链接...a.setAttribute('download', row.title); a.click(); URL.revokeObjectURL(href); } 四.fetch实现 //原理和ajax

51120

前端下载二进制流文件

Blobajax(axios) mdn 上是这样介绍 Blob Blob 对象表示一个不可变、原始数据类文件对象。...Blob 表示不一定是JavaScript原生格式数据 具体使用方法 axios({ method: 'post', url: '/export', }) .then(res => {...// 假设 data 是返回来二进制数据 const data = res.data const url = window.URL.createObjectURL(new Blob([data...最后发现是参数 responseType 问题,responseType 它表示服务器响应数据类型,由于后台返回来是二进制数据,所以我们要把它设为 arraybuffer, 接下来再看看结果是否正确...所以我们要对 arraybuffer 内容作个判断,在接收到数据将它转换为字符串,判断是否有 code: 199999。如果有,则报错提示,如果没有,则是正常文件,下载即可。

3K31

DOMString、Document、FormData、Blob、File、ArrayBuffer (转)

上述代码涉及XMLHttpRequest 2一些重要知识点,以及window.URL相关技术,都是可以深入挖掘学习部分,不是本文重点,以后有机会会细致阐述。...但是,并不是所有的图片都能以Blob形式请求,因为,毕竟是Ajax请求嘛,还是有一定跨域限制。...contentTypeBlob对象MIME类型,这个值将会成为Blob对象type属性值,默认为一个空字符串。...显然,此方法返回数据格式还是Blob对象,不过是指定范围复制Blob对象。...例如,我们设置Ajax请求responseType为”arraybuffer“,我们去请求某mm图片,返回response就是ArrayBuffer,就是个二进制对象。

2.7K30

前端axios下载excel,并解决axios返回header无法获取所有数据问题

需求:通过后端接口下载excel文件,后端没有文件地址,返回二进制流文件 实现:axios(ajax类似) 主要代码: axios:设置返回数据格式为blob或者arraybuffer 如:...//一些配置 responseType: 'blob', //返回数据格式,可选值为arraybuffer,blob,document,json,text,stream,默认值为json...}) 请求处理:   getExcel().then(res => {   //这里res.data是返回blob对象   var blob = new Blob...); //创建下载链接   downloadElement.href = href;   downloadElement.download = 'xxx.xlsx'; //下载后文件名...对象  }) ps:在下载过程中,会有一个文件名问题;这里后端把它放到了header里面,但是axiosres.header并不能获取: ?

4.2K60

你不知道 Blob

对于部分开发者来说,在完成上述功能之后,他们并不会继续思考 Blob 是什么? 这就导致了一些开发者,还是停留在熟练使用 API 层面,当遇到比较棘手问题,就束手无策。...我们不能直接在一个 Blob 中更改数据,但是我们可以对一个 Blob 进行分割,从其中创建 Blob 对象,将它们混合到一个 Blob 中。...因此,此类 URL 较短,但可以访问 Blob。生成 URL 仅在当前文档打开状态下才有效。...它允许引用 、 中 Blob如果你访问 Blob URL 不再存在,则会从浏览器中收到 404 错误。 上述 Blob URL 看似很不错,实际上它也有副作用。...虽然存储了 URL → Blob 映射, Blob 本身仍驻留在内存中,浏览器无法释放它。映射在文档卸载自动清除,因此 Blob 对象随后被释放。但是,如果应用程序寿命很长,那不会很快发生。

4K20
领券