ajax原理解析(一)

前端之家收集整理的这篇文章主要介绍了ajax原理解析(一)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

ajax是什么

AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。

创建XMLHttpRequest对象

function GetXmlHttpObject() {
  var xmlHttp=null;
  try {
    // Firefox,Opera 8.0+,Safari
    xmlHttp=new XMLHttpRequest();
   }
  catch (e) {
    // Internet Explorer
    try {
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e) {
      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    }
  return xmlHttp;
}

var xmlHttp=GetXmlHttpObject();

onreadystatechange 事件

当请求被发送到服务器时,我们需要执行一些基于响应的任务。
每当 readyState 改变时,就会触发 onreadystatechange 事件。
readyState 属性存有 XMLHttpRequest 的状态信息。
onreadystatechange: 存储函数(或函数名),每当 readyState 属性改变时,就会调用函数
readyState: 存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。

0: 请求未初始化
1: 服务器连接已建立
2: 请求已接收
3: 请求处理中
4: 请求已完成,且响应已就绪

status:

200: "OK"
404: 未找到页面

Async = true

当使用 async=true 时,请规定在响应处于 onreadystatechange 事件中的就绪状态时执行的函数

xmlHttp.onreadystatechange=function() {
  if (xmlHttp.readyState==4 && xmlHttp.status==200){
        var data = xmlHttp.responseText;
        document.getElementById("myDiv").innerHTML=data;
    }
}
xmlHttp.open("GET","test.json?data=test",true);
xmlHttp.send();

Async = false

xmlhttp.open("GET","test.json",false);
xmlhttp.send();
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

猜你在找的Ajax相关文章