Ajax的异步性
ajax的异同步性有open()最后一个参数决定,true代表异步,false代表同步。换句话说同步是客户机请求服务器响应,感觉让人比较慢(缺乏交互性),如果是处理大量的服务器处理,那么等待的时间可能很长。异步请求代表不用等待服务器响应,应用程序继续运行,这样响应迅速,交互性强,感觉就快多了。服务器完成了请求,onreadystatechange就要起作用了,该属性允许指定的回调函数
例子:
function showCustomer(str) {
var xmlhttp;
if (str=="") {
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest) {
xmlhttp=new XMLHttpRequest();
}
else {
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","getcustomer.asp?q="+str,true);
xmlhttp.send();
}
代码分析:假如没有xmlhttp.readyState==4会出现什么效果呢?在表单停止弹出之前会出现警告。所以这是请求/响应循环中的一个重要部分
在ajax中的五种就绪状态:
0:请求没有发出(open()调用之前)
1:请求已经建立但还没有发出(send()之前)
2:请求已经发出正在处理之中(通常可以从响应得到内容头部)
3:请求已经处理,响应中通常有部分数据可用,但是服务器没有完成响应
4:响应结束,可以访问服务器响应并使用它
xmlhttp.status:代表状态码
http://zh.wikipedia.org/wiki/HTTP%E7%8A%B6%E6%80%81%E7%A0%81
如果就绪状态是4而且状态码是200,我们就可以处理服务器的数据了