博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深入理解ajax系列第三篇——响应解码
阅读量:6696 次
发布时间:2019-06-25

本文共 2091 字,大约阅读时间需要 6 分钟。

前面的话

  我们接收到的响应主体类型可以是多种形式的,包括字符串String、ArrayBuffer对象、二进制Blob对象、JSON对象、javascirpt文件及表示XML文档的Document对象等。下面将针对不同的主体类型,进行相应的响应解码

 

属性

  在介绍响应解码之前,要先了解的属性。一般地,如果接受的数据是字符串,使用responseText即可,这也是最常用的用于接收数据的属性。但如果获取了其他类型的数据,使用responseText可能就不太合适了

【responseText】

  responseText属性返回从服务器接收到的字符串,该属性为只读。如果本次请求没有成功或者数据不完整,该属性就会等于null。

  如果服务器返回的数据格式是JSON、字符串、javascript或XML,都可以使用responseText属性

【response】

  response属性为只读,返回接收到的数据体。它的类型可以是ArrayBuffer、Blob、Document、JSON对象、或者一个字符串,这由XMLHttpRequest.responseType属性的值决定

  如果本次请求没有成功或者数据不完整,该属性就会等于null

  [注意]IE9-浏览器不支持

【responseType】

  responseType属性用来指定服务器返回数据(xhr.response)的类型

“”:字符串(默认值)“arraybuffer”:ArrayBuffer对象“blob”:Blob对象“document”:Document对象“json”:JSON对象“text”:字符串

【responseXML】

  responseXML属性返回从服务器接收到的Document对象,该属性为只读。如果本次请求没有成功,或者数据不完整,或者不能被解析为XML或HTML,该属性等于null

【overrideMimeType()】

  该方法用来指定服务器返回数据的MIME类型。该方法必须在send()之前调用

  传统上,如果希望从服务器取回二进制数据,就要使用这个方法,人为将数据类型伪装成文本数据

  但是,这种方法很麻烦,在XMLHttpRequest版本升级以后,一般采用指定responseType的方法

 

字符串

  如果服务器返回的结果是一个字符串,则直接使用responseText属性解析即可

  关于ajax()函数的封装,已经在中详细介绍过,这里就不再赘述。直接调用使用

JSON

  使用ajax最常用的传输方式就是使用JSON字符串,直接使用responseText属性解析即可

'颜色','data'=>'红色'],['title'=>'尺寸','data'=>'英寸'],['title'=>'重量','data'=>'公斤']]; echo json_encode($arr);?>

XML

  XML在JSON出现之前,是网络上常用的数据传输格式,但由于其格式较笨重,所以用的较少

  接收XML文档时,使用responseXML来对数据进行解析

迷迭香
周杰伦
成都
赵雷
是时候
孙燕姿

js

  使用ajax也可以接收js文件。仍然使用responseText来接收数据,但要使用eval()来执行代码

var obj = {    '姓名':'小火柴',    '年龄':28,    '性别':'男'}

blob

  在javascript中,通常表示二进制数据。但在实际Web应用中,Blob更多是图片二进制形式的上传与下载,虽然其可以实现几乎任意文件的二进制传输

  使用ajax接收blob数据,需要使用response来接收,并且将responseType设置为'blob'

  [注意]要完全兼容IE10+浏览器,需要将xhr.responseType设置在xhr.open()和xhr.send()方法之间

 

arraybuffer

  代表储存二进制数据的一段内存,而blob则用于表示二进制数据。通过ajax接收arraybuffer,然后将其转换为blob数据,从而进行进一步的操作

  responseType设置为arraybuffer,然后将response作为new Blob()构造函数的参数传递,生成blob对象

 

转载于:https://www.cnblogs.com/xiaohuochai/p/6520547.html

你可能感兴趣的文章
本周学习小结(18/03 - 24/03)
查看>>
猜数游戏
查看>>
关于 MVVMLight 设计模式系列
查看>>
用 js 写一个获取随机颜色的程序
查看>>
模块化开发之Amd规范和Cmd规范
查看>>
第19件事 财务分析
查看>>
python基础===open()文件处理使用介绍
查看>>
debounce与throttle区别
查看>>
StringList 自定义快速排序
查看>>
微信开发者工具的快捷键
查看>>
appium 链接真机后,运行代码,但是APP并没有启动
查看>>
局域网发送信息
查看>>
Vector3.Dot 判断方位
查看>>
从小白起步的程序猿
查看>>
2016-5-21 letwetell Round3 (百度之星初赛,dfs序,topo,对等比数列求和的优化)
查看>>
CYUSB3014固件部分低版本工程在Eclipse中编译得到img文件时无效的解决方案
查看>>
Bootstrap3 栅格系统-列排序
查看>>
【ShaderToy】基础篇之谈谈点、线的绘制
查看>>
【Unity Shaders】Diffuse Shading——漫反射光照改善技巧
查看>>
代理服务器 详解 Apache与Nginx的比较与分析
查看>>