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)