Ajax(Asynchronous JavaScript and XML ):这种技术能够向服务器端放送额外的数据而无需刷新整个页面,提高用户的体验

一、XMLHttpRequest

Ajax技术的核心,微软首次提出的概念,xhr提供了向服务器放送请求和解析服务器响应的接口,所以可以异步方式从服务器获得更多信息,而不需要刷新整个页面,就可以更新页面上的数据。

//高版本的浏览器如IE7+都支持原生的javascript XMLHttpRequest对象
//低版本IE6-通过ActiveX对象通过MSXML库来实现

function createXHR(){

  if (typeof XMLHttpRequest != 'undefined'){
    return new XMLHttpRequest();             
  } else if (typeof ActiveXObject != 'undefined'){
    var versions = [
                             "MSXML2.XMLHttp.6.0",
                             "MSXML2.XMLHttp.3.0",
                             "MSXML2.XMLHttp"
                            ];
    for(var i = 0; i < versions.length; i++){
        try{
               return new ActiveXObject(versions[i]);
        } catch(e){
          //do not deal with it
         }
    }
  } else {
    throw new Error("您的浏览器不支持XHR对象");
  }  
}    
    

创建完xhr对象之后,首先调用的是open方法,它接收3个参数,第一个是请求方式(get、post),第二个是路径url,第三个参数表上是否同步false表示同步,ture是异步。而open方法并不是真正的发送而是为请求作准备,通过send()方法进去进行发送请求,send接收一个参数,作为请求主体进行发送数据,如果没有数据则设置为null

xhr.send(null)//发送请求

请求发送完之后,xhr会自动接收服务器响应的数据,而且响应的数据会自动填充到xhr属性中去,xhr一共有4个属性

  responseText:作为响应主体被返回的内容

  responseXML

  status:响应http状态

  statusText:http状态的说明

//设置同步Ajax请求

var xhr = new createXHR();//获得xhr对象

xhr.open("get", url, "false");//false :同步
xhr.send(null);
if (xhr.status === 200){
  alert(xhr.responseText);
} else {
}
//异步
var xhr = new createXHR();

xhr.open("get", url, true);//true:异步

xhr.onreadystatechange = functiono(){
  if (xhr.state === 4){
    if (xhr.statue === 200){
      alert(xhr.responseText);
    }
  }
}

xhr.send(null);

 

posted on 2014-09-30 00:53  苏荷酒吧  阅读(158)  评论(0)    收藏  举报