onreadystatechange(ajax原理和实现步骤)
资讯
2023-12-07
68
1. onreadystatechange,ajax原理和实现步骤?
ajax原理:简单来说通过XMLHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用JavaScript来操作DOM而更新页面。
实现步骤:
1.创建 Ajax的核心对象 XMLHttpRequest对象
2.通过 XMLHttpRequest 对象的 open() 方法与服务端建立连接
3.构建请求所需的数据内容,并通过XMLHttpRequest 对象的 send() 方法发送给服务器端
4.通过 XMLHttpRequest 对象提供的 onreadystatechange 事件监听服务器端你的通信状态
5.接受并处理服务端向客户端响应的数据结果
6.将处理结果更新到 HTML页面中
2. JavaScript如何断定图片资源已加载完成?
在实际的运用中有这样一种场景,某资源加载完成后再执行某个操作,例如在做导出时,后端通过打开模板页生成PDF,并返回下载地址。这时前后端通常需要约定一个flag,用以标识模板准备就绪,可以生成PDF了。
试想,如果模板中有图片,此时如何判断图片是否加载完成?
在此之前来了解一下jquery的ready与window.onload的区别,ready只是dom结构加载完毕,便视为加载完成。(此时图片没有加载完毕),onload是指dom的生成和资源完全加载(比如flash、图片)出来后才执行。接下来回到正题,先从单张图片说起。
(1)、单张图片(图片在文档中)
// HTML<img id='xiu' src="http://www.daqianduan.com/wp-content/uploads/2014/11/hs-xiu.jpg"> //js $(document).ready(function(){ //jquery $('#xiu').load(function(){ // 加载完成 }); //原生 onload var xiu = document.getElementById('xiu') xiu.onload = xiu.onreadystatechange = function(){ if(!this.readyState||this.readyState=='loaded'||this.readyState=='complete'){ // 加载完成 } };})
注:1、IE8及以下版本不支持onload事件,但支持onreadystatechange事件;2、readyState是onreadystatechange事件的一个状态,值为loaded或complete的时候,表示已经加载完毕。3、以下内容省略兼容
(2)、单张图片(图片动态生成)
//js var xiu = new Image() xiu.src = 'http://www.daqianduan.com/wp-content/uploads/2014/11/hs-xiu.jpg' xiu.onload = function(){ // 加载完成 }
(3)、单张图片(结合ES6 Promise)
//js new Promise((resolve, reject)=>{ let xiu = new Image() xiu.src = 'http://www.daqianduan.com/wp-content/uploads/2014/11/hs-xiu.jpg' xiu.onload = function(){ // 加载完成 resolve(xiu) } }).then((xiu)=>{ //code })
(4)、多张图片
var img = [], flag = 0, mulitImg = [ 'http://www.daqianduan.com/wp-content/uploads/2017/03/IMG_0119.jpg', 'http://www.daqianduan.com/wp-content/uploads/2017/01/1.jpg', 'http://www.daqianduan.com/wp-content/uploads/2015/11/jquery.jpg', 'http://www.daqianduan.com/wp-content/uploads/2015/10/maid.jpg' ]; var imgTotal = mulitImg.length; for(var i = 0 ; i < imgTotal ; i++){ img[i] = new Image() img[i].src = mulitImg[i] img[i].onload = function(){ //第i张图片加载完成 flag++ if( flag == imgTotal ){ //全部加载完成 } } }
(5)、多张图片(结合ES6 Promise.all())
let mulitImg = [ 'http://www.daqianduan.com/wp-content/uploads/2017/03/IMG_0119.jpg', 'http://www.daqianduan.com/wp-content/uploads/2017/01/1.jpg', 'http://www.daqianduan.com/wp-content/uploads/2015/11/jquery.jpg', 'http://www.daqianduan.com/wp-content/uploads/2015/10/maid.jpg' ]; let promiseAll = [], img = [], imgTotal = mulitImg.length; for(let i = 0 ; i < imgTotal ; i++){ promiseAll[i] = new Promise((resolve, reject)=>{ img[i] = new Image() img[i].src = mulitImg[i] img[i].onload = function(){ //第i张加载完成 resolve(img[i]) } }) } Promise.all(promiseAll).then((img)=>{ //全部加载完成 })
3. xmlhttprequest服务器接口如何编写?
使用XMLHttpRequest对象发送请求的基本步骤如下: 1. 为得到XMLHttpRequest对象实例的一个引用,可以创建一个新的实例,也可以访问包含有XMLHttpRequest实例的一个变量。 2. 告诉XMLHttpRequest对象,哪个函数会处理XMLHttpRequest对象状态的改变,为此要把对象的onreadystatechange属性设置为指向JavaScript函数的指针。 3. 指定请求的属性。XMLHttpRequest对象的open()方法会指定将发出的请求。open()方法取3个参数:一个是指示所用方法(通常是GET或POST)的串;一个是表示目标资源URL的串;一个是Boolean值,指示请求是否是异步的。 4. 将请求发送给服务器。XMLHttpRequest对象的send()方法把请求发送到指定的目标资源。send()方法接受一个参数,通常是一个串或一个DOM对象。这个参数作为请求体的一部分发送到目标URL。当向send()方法提供参数时,要确保open()中指定的方法是POST。如果没有数据作为请求体的一部分被发送,则使用null。
4. ajax如何写请求?
要写一个Ajax请求,你首先需要创建一个XmlHttpRequest对象。然后,通过open()方法指定请求的类型(GET或POST)、URL和是否异步。
接下来,通过onreadystatechange事件监听器,当请求状态改变时,执行回调函数。
在回调函数中,检查readyState为4并且status为200,表示请求成功。
最后,通过send()方法发送请求,可以带有参数。在服务器返回响应后,可以通过responseText或responseXML获取响应内容。这样就完成了一个简单的Ajax请求。
本站涵盖的内容、图片、视频等数据系网络收集,部分未能与原作者取得联系。若涉及版权问题,请联系我们删除!联系邮箱:ynstorm@foxmail.com 谢谢支持!
1. onreadystatechange,ajax原理和实现步骤?
ajax原理:简单来说通过XMLHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用JavaScript来操作DOM而更新页面。
实现步骤:
1.创建 Ajax的核心对象 XMLHttpRequest对象
2.通过 XMLHttpRequest 对象的 open() 方法与服务端建立连接
3.构建请求所需的数据内容,并通过XMLHttpRequest 对象的 send() 方法发送给服务器端
4.通过 XMLHttpRequest 对象提供的 onreadystatechange 事件监听服务器端你的通信状态
5.接受并处理服务端向客户端响应的数据结果
6.将处理结果更新到 HTML页面中
2. JavaScript如何断定图片资源已加载完成?
在实际的运用中有这样一种场景,某资源加载完成后再执行某个操作,例如在做导出时,后端通过打开模板页生成PDF,并返回下载地址。这时前后端通常需要约定一个flag,用以标识模板准备就绪,可以生成PDF了。
试想,如果模板中有图片,此时如何判断图片是否加载完成?
在此之前来了解一下jquery的ready与window.onload的区别,ready只是dom结构加载完毕,便视为加载完成。(此时图片没有加载完毕),onload是指dom的生成和资源完全加载(比如flash、图片)出来后才执行。接下来回到正题,先从单张图片说起。
(1)、单张图片(图片在文档中)
// HTML<img id='xiu' src="http://www.daqianduan.com/wp-content/uploads/2014/11/hs-xiu.jpg"> //js $(document).ready(function(){ //jquery $('#xiu').load(function(){ // 加载完成 }); //原生 onload var xiu = document.getElementById('xiu') xiu.onload = xiu.onreadystatechange = function(){ if(!this.readyState||this.readyState=='loaded'||this.readyState=='complete'){ // 加载完成 } };})
注:1、IE8及以下版本不支持onload事件,但支持onreadystatechange事件;2、readyState是onreadystatechange事件的一个状态,值为loaded或complete的时候,表示已经加载完毕。3、以下内容省略兼容
(2)、单张图片(图片动态生成)
//js var xiu = new Image() xiu.src = 'http://www.daqianduan.com/wp-content/uploads/2014/11/hs-xiu.jpg' xiu.onload = function(){ // 加载完成 }
(3)、单张图片(结合ES6 Promise)
//js new Promise((resolve, reject)=>{ let xiu = new Image() xiu.src = 'http://www.daqianduan.com/wp-content/uploads/2014/11/hs-xiu.jpg' xiu.onload = function(){ // 加载完成 resolve(xiu) } }).then((xiu)=>{ //code })
(4)、多张图片
var img = [], flag = 0, mulitImg = [ 'http://www.daqianduan.com/wp-content/uploads/2017/03/IMG_0119.jpg', 'http://www.daqianduan.com/wp-content/uploads/2017/01/1.jpg', 'http://www.daqianduan.com/wp-content/uploads/2015/11/jquery.jpg', 'http://www.daqianduan.com/wp-content/uploads/2015/10/maid.jpg' ]; var imgTotal = mulitImg.length; for(var i = 0 ; i < imgTotal ; i++){ img[i] = new Image() img[i].src = mulitImg[i] img[i].onload = function(){ //第i张图片加载完成 flag++ if( flag == imgTotal ){ //全部加载完成 } } }
(5)、多张图片(结合ES6 Promise.all())
let mulitImg = [ 'http://www.daqianduan.com/wp-content/uploads/2017/03/IMG_0119.jpg', 'http://www.daqianduan.com/wp-content/uploads/2017/01/1.jpg', 'http://www.daqianduan.com/wp-content/uploads/2015/11/jquery.jpg', 'http://www.daqianduan.com/wp-content/uploads/2015/10/maid.jpg' ]; let promiseAll = [], img = [], imgTotal = mulitImg.length; for(let i = 0 ; i < imgTotal ; i++){ promiseAll[i] = new Promise((resolve, reject)=>{ img[i] = new Image() img[i].src = mulitImg[i] img[i].onload = function(){ //第i张加载完成 resolve(img[i]) } }) } Promise.all(promiseAll).then((img)=>{ //全部加载完成 })
3. xmlhttprequest服务器接口如何编写?
使用XMLHttpRequest对象发送请求的基本步骤如下: 1. 为得到XMLHttpRequest对象实例的一个引用,可以创建一个新的实例,也可以访问包含有XMLHttpRequest实例的一个变量。 2. 告诉XMLHttpRequest对象,哪个函数会处理XMLHttpRequest对象状态的改变,为此要把对象的onreadystatechange属性设置为指向JavaScript函数的指针。 3. 指定请求的属性。XMLHttpRequest对象的open()方法会指定将发出的请求。open()方法取3个参数:一个是指示所用方法(通常是GET或POST)的串;一个是表示目标资源URL的串;一个是Boolean值,指示请求是否是异步的。 4. 将请求发送给服务器。XMLHttpRequest对象的send()方法把请求发送到指定的目标资源。send()方法接受一个参数,通常是一个串或一个DOM对象。这个参数作为请求体的一部分发送到目标URL。当向send()方法提供参数时,要确保open()中指定的方法是POST。如果没有数据作为请求体的一部分被发送,则使用null。
4. ajax如何写请求?
要写一个Ajax请求,你首先需要创建一个XmlHttpRequest对象。然后,通过open()方法指定请求的类型(GET或POST)、URL和是否异步。
接下来,通过onreadystatechange事件监听器,当请求状态改变时,执行回调函数。
在回调函数中,检查readyState为4并且status为200,表示请求成功。
最后,通过send()方法发送请求,可以带有参数。在服务器返回响应后,可以通过responseText或responseXML获取响应内容。这样就完成了一个简单的Ajax请求。
本站涵盖的内容、图片、视频等数据系网络收集,部分未能与原作者取得联系。若涉及版权问题,请联系我们删除!联系邮箱:ynstorm@foxmail.com 谢谢支持!