ajax编程**

ajax 编程 *
step1
获得 XmlHttpRequest 对象。
该对象由浏览器提供,但是该类型并没有标准化。
ie 和其它浏览器不同,其它浏览器都支持该类型,而 ie 不支持。

  function getXmlHttpRequest(){
    var xhr = null;
    if((typeof XMLHttpRequest)!='undefined'){
      xhr = new XMLHttpRequest();
    }else {
      xhr = new ActiveXObject('Microsoft.XMLHttp');
    }
    return xhr;
  }

step2
使用 XmlHttpRequest 向服务器发请求。
a.
发送 get 请求
var xhr = getXmlHttpRequest();
/* open(请求方式,请求地址,同步/异步)
* 请求方式: get/post
* 请求地址:如果是 get 请求,请求参数添加到地址之后。
* 比如 check_user.do?username=zs
* 同步/异步:true 表示异步。*/
xhr.open('get','check_user.do',true);
/* 注册一个监听器(即当 xhr 的状态发生改变产生了 readystatechange 事件,
* 该事件会由 f1 函数来处理。我们需要在 f1 函数里面获得服务器返回的数据,
* 然后更新页面) */
xhr.onreadystatechange=f1;
/* 只有调用 send 方法之后,请求才会真正发送 */
xhr.send(null);
b.
发送 post 请求
var xhr = getXmlHttpRequest();
xhr.open('post','check_username.do',true);
//必须添加一个消息头 content-type
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xhr.onreadystatechange=f1;
xhr.send('username=zs');

step3
在服务器端,处理请求。
step4
在监听器当中,处理服务器返回的响应。
xhr.onreadystatechange=f1;
function f1(){
//编写相应的处理代码
}
或者
xhr.onreadystatechange=function(){
//编写相应的处理代码
if(xhr.readyState == 4){
//只有 readyState 等于 4,xhr 才完整地接收到了服务器返回的数据。
//获得文本数据
var txt = xhr.responseText;
//获得一个 xml dom 对象。
var xml = xhr.responseXML;
//dom 操作、更新页面
}
};

===============================

XmlHttpRequest 对象的重要属性 **
1)
onreadystatechange: 注册一个监听器(也就是,绑订一个事件处理函数)。
2)
readyState:
返回该对象不服务器通讯的状态。
返回值是一个 number 类型的值,不同的值表示的
含义如下:
0 (未初始化) 对象已建立,但是尚未初始化(尚未调用 open 方法)。
1 (初始化) 对象已建立,尚未调用 send 方法。
2 (发送数据) send 方法已调用。
3 (数据传送中) 已接收部分数据。
4 (响应结束)接收了所有的数据。
3)
responseText:
获得服务器返回的文本。
4)
responseXML:
获得服务器返回的 XML dom 对象。
5)
status:  获得状态码

===========

缓存问题 *
在使用 ie 浏览器时,如果使用 get 方式发送请求,浏览器会将数据缓存起来。这样,当再次发送请
求时,如果请求地址不变,ie 不会真正地向服务器发请求,而是将之前缓存的数据显示给用户。
解决方式:

方式一:使用 post 方式。
方式二:在请求地址后面添加一个随机数。

走在一起是缘分,在一起走是幸福; 在一起走是缘分,走在一起是幸福
原文地址:https://www.cnblogs.com/tarena/p/3625723.html