日期:2014-05-16  浏览次数:20566 次

ajax 笔记
1:浏览器的一个内置对象XmlhttpRequest向服务器发送请求,页面无刷新
2:用户触动事件处理函数——ajax对象起作用-----服务器处理----监听器监听ajax对象的状态-----成功后获取结果数据对页面处理
3:属性
  onreadystatechange:注册一个监听器
  readyState:返回对象与服务器的状态
             0:对象已建立,尚未初始化(每调用open方法)
             1:对象已建立,未调用send方法
             2:send方法已经建立
             3:数据传送中
             4:接收了所有数据
responseText:获取服务器的文本
responseXML:获取服务器的XML dom对象
status:获得状态码
ie缓存问题:ie使用get方式发送请求,ie会降数据缓存,再次发送,地址不变,ie会将之前缓存的数据显示给用户,不向服务器发             送请求(1:post 2:请求方式后加以随机数)
案例:function getXmlHttpRequest(){
        var xhr=null;
        if((typeof XMLHttpRequest)!='undefined'){
         xhr=new XMLHttpRequest();
        }else{
         xhr=new ActiveXObject('Microsoft.XMLHttp');
        }
        return xhr;
      }
      function f2(){
       var xhr=getXmlHttpRequest();
       var username=document.getElementById('name').value;
       var name_msg=document.getElementById('name_msg');
       xhr.open('get','login?name='+username,true);
       xhr.onreadystatechange=function(){
         if(xhr.readyState==4){
           var tex=xhr.responseText;    //responseText是xhr对象的属性(应用的都是属性)
           name_msg.innerHTML=tex;
         }
       };
       xhr.send(null);                 //post的方式传值的时候要加上如:xhr.send(‘username=’+username)
      }
4:中文乱码问题
  post:会使用utf-8进行编码,需要用utf-8进行解码:request.setCharacterEncoding("tf-8");
  get:火狐会用utf-8编码,ie会用gbk/gb2312进行编码
      解决方式:tomcat中得server.xml配置文件URLEncoding=“utf-8”(火狐可以,ie还不行)
                xhr.open('get',encodURL(uri),true);(ie有缓存,需要重启ie)