We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ajax指的就是异步的javascript和XML,不过在使用ajax的过程中,我们很少会使用XML来进行数据的传递。ajax的出现,让我们可以在不刷新网页的情况下,发送http请求,与后端进行交互。
ajax的使用是比较简单的,基本上我们需要了解它是怎么发送请求的,以及它是怎么处理服务器响应的。
创建一个XMLHttpRequest对象,然后调用对象的open方法和send方法就可以了,我们来看一下具体怎么操作
// 创建XMLHttpRequest对象 var xhr = new XMLHttpRequest(); // 调用对象的open方法,来创建于服务器的连接 xhr.open(“GET” , “demo.txt” , true); // 调用对象的send方法,来发送http请求 xhr.send(null);
当我们发送ajax请求后,我们可以给xhr对象的onreadystatechange属性指定一个函数,每当请求的状态发生变化时,就会执行这个函数。
var xhr = new XMLHttpRequest(); xhr.open('get' , 'demo.txt'); // 每当请求状态方法变化的时候,就会执行fn xhr.onreadystatechange = fn; xhr.send(null);
那么ajax请求的状态有哪些呢?
我们可以通过执行下面代码来打印出请求状态值
var xhr = new XMLHttpRequest(); xhr.open('get' , 'demo.txt'); xhr.onreadystatechange = function () { console.log(xhr.readyState); }; xhr.send(null);
当readyState为4,并且status为200的时候,我们就可以通过responseText获取到响应的数据了。
var btn = document.getElementById('btn'); btn.addEventListener('click' , function () { var xhr = new XMLHttpRequest(); xhr.open('get' , 'demo.txt'); xhr.onreadystatechange = function () { if (xhr.readyState == 4) { if (xhr.status == 200) { console.log(xhr.responseText); } else { console.log('请求失败'); } } }; xhr.send(null); });
上面的代码是get请求,如果是post请求呢?我们需要传递一些数据到后端,让后端根据我们传递的数据做相应的处理,这个时候,我们需要设置请求头信息,比如,要设置Content-Type的头信息,该头信息一般我们可以设置三种类型
当通过ajax请求去获取服务器上的资源时,可以通过给xhr对象添加一些监听事件来监测资源的下载进度。
// 点击按钮,去获取index.css文件内容。 var btn = document.getElementById('btn'); btn.addEventListener('click' , function () { var xhr = new XMLHttpRequest(); xhr.addEventListener('loadstart' , function () { console.log('loadstart'); }); xhr.addEventListener('progress' , function () { console.log('progress'); }); xhr.addEventListener('load' , function () { console.log('load'); }); xhr.addEventListener('error' , function () { console.log('error'); }); xhr.addEventListener('abort' , function () { console.log('abort'); }); xhr.addEventListener('loadend' , function () { console.log('loadend'); }); xhr.open('get' , 'index.css'); xhr.onreadystatechange = function () { if (xhr.readyState == 4) { if (xhr.status == 200) { console.log(xhr.response); } } } xhr.send(null); });
为了能够更好的看到事件被触发过程,我们可以在浏览器上把网速改低一点,正常情况下,触发事件的过程是这样的:
如果在接收响应数据期间,突然网络异常,那么会是怎么触发事件的呢?
如果在接收响应数据期间,人为调用abort方法中止请求,那么事件又是怎么触发的呢?
var btn = document.getElementById('btn'); btn.addEventListener('click' , function () { var xhr = new XMLHttpRequest(); xhr.addEventListener('loadstart' , function () { console.log('loadstart'); }); xhr.addEventListener('progress' , function (evt) { if (evt.lengthComputable) { var percent = evt.loaded / evt.total; percent = percent.toFixed(2) * 100; console.log(percent + '%'); } }); xhr.addEventListener('load' , function (evt) { console.log('load'); }); xhr.addEventListener('error' , function () { console.log('error'); }); xhr.addEventListener('abort' , function () { console.log('abort'); }); xhr.addEventListener('loadend' , function () { console.log('loadend'); }); xhr.open('get' , 'index.css'); xhr.send(null); });
上面的代码,我们可以清楚的看到接受响应数据的进度,结果如下
我们这里看到的是下载的进度事件,除了下载之外,还有上传的进度事件,上传的相关进度事件是在ajax对象的upload属性上触发的。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
ajax
ajax指的就是异步的javascript和XML,不过在使用ajax的过程中,我们很少会使用XML来进行数据的传递。ajax的出现,让我们可以在不刷新网页的情况下,发送http请求,与后端进行交互。
ajax的使用是比较简单的,基本上我们需要了解它是怎么发送请求的,以及它是怎么处理服务器响应的。
ajax怎么发送请求?
创建一个XMLHttpRequest对象,然后调用对象的open方法和send方法就可以了,我们来看一下具体怎么操作
ajax怎么处理服务器响应?
当我们发送ajax请求后,我们可以给xhr对象的onreadystatechange属性指定一个函数,每当请求的状态发生变化时,就会执行这个函数。
那么ajax请求的状态有哪些呢?
我们可以通过执行下面代码来打印出请求状态值
当readyState为4,并且status为200的时候,我们就可以通过responseText获取到响应的数据了。
上面的代码是get请求,如果是post请求呢?我们需要传递一些数据到后端,让后端根据我们传递的数据做相应的处理,这个时候,我们需要设置请求头信息,比如,要设置Content-Type的头信息,该头信息一般我们可以设置三种类型
XMLHttpRequest对象有哪些常用属性和方法?
常用属性:
常用方法
监测进度
当通过ajax请求去获取服务器上的资源时,可以通过给xhr对象添加一些监听事件来监测资源的下载进度。
为了能够更好的看到事件被触发过程,我们可以在浏览器上把网速改低一点,正常情况下,触发事件的过程是这样的:
如果在接收响应数据期间,突然网络异常,那么会是怎么触发事件的呢?
如果在接收响应数据期间,人为调用abort方法中止请求,那么事件又是怎么触发的呢?
上面的代码,我们可以清楚的看到接受响应数据的进度,结果如下
我们这里看到的是下载的进度事件,除了下载之外,还有上传的进度事件,上传的相关进度事件是在ajax对象的upload属性上触发的。
The text was updated successfully, but these errors were encountered: