获取 XMLHttpRequest对象
使用IE浏览器
IE浏览器使用 MSXML 解析器处理 XML, 根据IE中安装的 JavaScript 技术版本不同,MSXML 实际上有两种不同的版本,因此必须对这两种情况分别编写代码。
在 Microsoft 浏览器上创建 XMLHttpRequest 对象
var xmlHttp = false;
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
xmlHttp = false;
}
}
牢牢记住其中的两行代码
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
处理 Mozilla 和非 IE 浏览器
<script language="javascript" type="text/javascript">
var xmlHttp = new XMLHttpRequest();
</script>
var xmlHttp = false;
function createXMLHttp(){
try{
xmlHttp = new ActiveXObject("Mircrosoft.XMLHTTP");
}catch(e){
try{
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
xmlHttp = new XMLHttpRequest();
}
}
}
XMLHttpRequest对象常用方法和属性
void open(string method,string url,boolean asynch,string username,string password)
建立对服务器的调用,前2个参数是必要参数,后几个为可选参数
method:指定调用的方式(GET/POST)
url:指定调用资源的URL
asynch:是否采用异步。默认值为true,true表示采用异步。
最后2个参数允许指定特定的用户和密码
void send(content):向服务器发出请求
如果请求为异步,此方法立即返回,否则直到接到响应为止
可选参数可以是DOM对象实例或串
void setRequestHeader(string header,string value):设定头信息
response.setHeader("Cache-control","no-cache");设置页面不缓存
response.setHeader("pragma","no-cache");设置页面不缓存
此方法必须在调用Open方法之后调用
string getAllResponseHeaders():获取头信息
string getResponseHeader(string header):获取头信息
XMLHttpRequest对象属性
onreadystatechange: 每个状态改变都会触发这个事件处理器,通常是调用javascript回调函数
readyState :请求状态,0=未初始化 1=正在加载 3=交互中 4=完成
status :服务器状态码(200 ok,404 not found等)
statusText :HTTP状态码的相应文本(ok或not found等)。
responseText :服务器的响应,表示为一个串
responseXML :服务器的响应,表示为XML
交互示例
function validateEmali(){
createHttpRequest();
var email = document.getElementById("email");
var url = "validate?email="+escape(email.value);
xmlHttp.open("GET",url);
xmlHttp.onreadystatechange = callback;//应在send方法
xmlHttp.send(null);
}
function callback(){
if(xmlHttp.readyState==4 ){
if(xmlHttp.status==200 ){
//do something
}
}
}
使用XMLHttpRequest对象发送请求的基本步骤
1:创建XMLHttpRequest对象
2:告诉XMLHttpRequest对象的状态发生改变的时候(onreadystatechange)调用哪个函数
3:指定请求属性 XMLHttpRequest对象的Open方法
4:将请求发送个服务器 XMLHttpRequest对象的send方法,send方法可接受1个参数,这个参数
可以作为URL一部分发送个服务器
XMLHttpRequest对象不能请求脚本所在域之外的资源
xmlHttp.open("GET",url);
xmlHttp.onreadystatechange = callback;//应在send方法
xmlHttp.send(null);
if(xmlHttp.readyState==4 ){
if(xmlHttp.status==200 ){
//do something
}
}