Ajax-API
var xmlhttp = false;
function CreateXMLHttp(){
try{
xmlhttp = new XMLHttpRequest(); //创建 XMLHttpRequest 对象,除 IE 外的浏览器都支持此方法。
}
catch (e){
try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");//新版本IE 创建 IE 兼容对象(Msxml2.XMLHTTP)
}
catch (e){
try{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); //老版本IE创建IE兼容对象(Microsoft.XMLHTTP)
}
catch (failed){
xmlhttp = false; //如果失败则保证 request 的值仍然为 false。
}
}
}
return xmlhttp;
}
Ajax请求函数:
function sendRequest(){
var url = "http://127.0.0.1:8080/ch19_1/ajaxServlet?action=send";
CreateXMLHttp(); //创建Ajax对象函数的调用
if(xmlhttp){
xmlhttp.open("GET",url, true);
xmlhttp.onreadystatechange = getResult; //返回结果处理函数的调用
xmlhttp.send(null);
}
}
function getResult(){
if (xmlhttp.readyState == 4 && xmlhttp.status == 200){
var type = xmlhttp.responseXML.getElementsByTagName("type_name");
var str=new Array();
for(var i=0;i< type.length;i++){
str[i]=type[i].firstChild.data;
document.all['td'].innerHTML+=str[i]+"";
}
}
}
这里要注意xmlhttp.readyState 的状态值,不同的值代表不同的状态:
0 Uninitialized 初始化状态。XMLHttpRequest 对象已创建(未调用open()之前)或已被 abort() 方法重置
1 Open open() 方法已调用,但是 send() 方法未调用。请求还没有被发送。
2 Sent Send() 方法已调用,HTTP 请求已发送到 Web 服务器。未接收到响应。
3 Receiving 所有响应头部都已经接收到。响应体开始接收但未完成。
4 Loaded HTTP 响应已经完全接收。