同步与异步:
同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事
异步: 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕
ajax.open方法中,第3个参数是设同步或者异步。prototype等js类库一般都默认为异步,即设为true。先说下同步的情况下,js会等 待请求返回,获取status。不需要onreadystatechange事件处理函数。而异步则需要onreadystatechange事件处理, 且值为4再正确处理下面的内容。
var request;
function createRequest(){
try{
request = new XMLHttpRequest();
}catch(othermicrosoft){
try{
request = new ActiveXObject("Microsoft.XMLHTTP"); // IE5.5+
}catch(failed){
request = false;
}
}
if(!request) alert('Error initializing XMLHTTPRequest!');
request.open("GET",url,true);
// request.SetRequestHeader("");
request.send(null);
//(1) :当 open的第三个参数设置为false时(也就是同步,不需要使用onreadystatechange事件;)
var result = request.status;
if(result == 200){ ............ }
xmlhttp = null;
//(2): 当 open的第三个参数设置为true时(也就是异步)
handleResponse();
}
function handleResponse(){
if(request.readyState == 4 && request.status == 200){
...................
reqeust = null;
}
}