Ajax是网页与服务端进行数据交互的一种技术.我们可以通过服务端提供接口,用Ajax向服务端请求我们需要的数据,整个过程的简单实现如下所示.
// 简单的Ajax原生实现
// 由服务端提供接口
var url = "https://baidu.com/";
var result;
var XHR = new XMLHttpResquest();
XHR.open('GET', url, true);
XHR.send();
XHR.onreadystatechange = function() {
if(XHR.readystate == 4 && XHR.status == 200) {
result = XHR.response;
console.log(result);
}
}
在Ajax的原生实现中,利用了onreadystatechange事件,只有当该事件触发并且符合一定条件时,才能拿到我们想要的数据,之后才能处理数据.
这样做看上去并没有什么,但是如果这个时候,还需要做另外一个Ajax请求,那么这个新的Ajax请求中的一个参数,则必须从上一个Ajax请求中获取.这个时候我们就不得不这样做了
// 简单的Ajax原生实现
// 由服务端提供接口
var url = "https://baidu.com/";
var result;
var XHR = new XMLHttpResquest();
XHR.open('GET', url, true);
XHR.send();
XHR.onreadystatechange = function() {
if(XHR.readystate == 4 && XHR.status == 200) {
result = XHR.response;
console.log(result);
// 伪代码大概如下:
var url2 = '.....';
var XHR2 = new XMLHttpResquest();
XHR2.open();
XHR2.send();
....
}
}
当还有第三个Ajax时,就会越来越麻烦了,就会产生我们所说的 回调地狱