编写原生Ajax的过程,和打电话的过程有点类似。我们可以类比一下。
打电话的过程:
- 拥有一个电话;
- 拨号;
- 自己说;
- 听别人说。
Ajax的过程:
- 创建Ajax对象;
- 连接服务器;
- 发送请求;
- 接受返回值。
function ajax(url, fnSucc, fnFiled){ if(window.XMLHttpRequest){ //1.用没有定义的变量(如:a),报错;2.用没有定义的属性(如:window.a),undefined var oAjax = new XMLHttpRequest(); //非IE6 }else{ var oAjax = new ActiveXObject("Microsoft.XMLHTTP"); //IE6 } //连接服务器 //open(方式,url, 异步传输) oAjax.open('get', url, true); //发送请求 oAjax.send(); //接受请求 //当网络状态改变的时候 oAjax.onreadystatechange = function(){ //每当 readyState 改变时,就会触发 onreadystatechange 事件 if(oAjax.readyState==4){ // readyState 状态值:网络状态,浏览器和服务器进行到哪一步了 if(oAjax.status==200){ //状态码:http状态,说到404就知道了 fnSucc(oAjax.responseText); }else{ if(fnFiled){ fnFiled(oAjax.status); } } } } }
readyState状态值:
0 (未初始化)还没有调用open方法
1 (载入)以调用send方法,正在发送请求
2 (载入完成)send方法完成,已收到全部响应内容
3 (解析)正在解析响应内容
4 (完成)响应内容解析完成,可以在客户端调用了