2020.08.03学习内容:JSON&XHR

JSON.stringify() :将js对象序列化为一个JSON字符串。 接受三个参数,第一个参数将要序列化成一个JSON 字符串的值(一般为待序列化的js对象);第二个参数可以是数组也可以是函数:

1⃣数组:返回的字符串中只会包含数组中包含的字符(键)与值
2⃣函数:函数接受两个参数,属性名和属性值,每个键下返回的值就作为该键的值。
第三个参数:指定缩进用的空白字符串,如果是数字,则代表有多少个空格(最大为10,小于1则表示没有空格);如果为字符串,则将该字符串当作空格(字符串长度超过10时取前10个字母)
js高程566~567

JSON.parse():将JSON字符串还原为js对象。接受两个参数,第一个参数是value,第二个参数是一个函数,该函数的两个参数依然是键值对,返回值为该键的值。
XMLHttpRequest:

使用方法(示例get):1⃣let xhr = new XMLHttpRequest() 2⃣xhr.open(“get”, “example.txt”, false) 3⃣xhr.send(null)
open的第一个参数是请求的类型(“get”,"post"等);第二个参数是请求的URL,这个URL相当于执行代码的当前页面(也可以是绝对路径);第三个参数表示是否异步发送请求的布尔值(false为同步,true为异步),默认为true。

调用open()方法时并不会真正发送请求,而只是启动一个请求以备发送,而send()方法才是发送特定的请求。send()方法接受一个参数,作为请求主体发送的数据,如果不需要通过请求主体发送数据,必须要传入null。在服务器响应之后会自动将数据填充到XHR对象的属性,例如requestText: 作为响应主体被返回的文本,status: 响应的HTTP状态。
XHR对象的readyState属性:

0:未初始化。尚未调用open()方法。
1:启动。已经调用open()方法,但尚未调用send()方法。
2:发送。已经调用send()方法,但尚未收到响应。
3:接收。已经收到部分响应。
4:完成。已经接收到全部响应数据,而且已经可以在客户端使用了。

在接收到响应之前可以直接调用abort()方法取消异步请求。xhr.abort();
使用setRequestHeader()方法可以设置自定义的请求头部信息,该方法接收两个参数,头部字段的名称和值。(在open()方法之后,send()方法之前使用)。

部分头部信息:
Accept: 浏览器能够处理的内容类型
Accept-Charset: 浏览器能够显示的字符集
Accept-Encoding: 浏览器能够处理的压缩编码
Accept-Language: 浏览器当前设置的语言
Connection: 浏览器与服务器之间连接的类型
Cookie: 当前页面设置的任何Cookie
Host: 发出请求的页面所在的域
Referer: 发出请求的页面的URL
User-Agent: 浏览器的用户代理字符串

使用getResponseHeader()方法并传入头部信息名称可以获得相应的响应头部信息;getAllResponseHeaders()方法可以获得一个包含所有头部信息的长字符串。
FormData类型:一种表示表单数据的键值对的构造方式。

let data = new FormData()
data.append(“name”, “YanJie”)
也可以添加任意多个键值对。
优势:使用FormData不必明确的在XHR对象上设置请求头部,XHR能够识别传入的数据类型为FormData的实力,并配置适当的头部信息。

overrideMimeType() :用于重写XHR响应的MIME类型。

xhr.overrideMimeType(“text/xml”) 会强迫XHR队形将响应当作XML来处理,必须要在send()之前调用该方法。

XHR的6个进度事件:

loadstart: 在接收到响应数据的第一个字节时触发
progress: 在接收响应期间持续不断地触发
error: 在请求发生错误时触发
abort: 在因为调用abort()方法而终止连接时触发
load: 在接收到完整的响应数据时触发
loadend: 在通信完成或者触发error、abort、load事件后触发
load事件:xhr.onload = function() {} 只要浏览器接收到服务器的响应就会触发load事件,所以必须要检测status才能了解数据是否真的可用。
progerss事件: xhr.onprogress = function(event) {} 该事件会接收一个event对象,包含有三个属性:
lengthComputable: 表示进度信息是否可用的布尔值
position: 表示已经接收的字节数
totalSize: 表示根据Content-Length响应头部确定的预期字节数
必须在open()之前调用该方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值