异步JavaScript与XML(AJAX)是一个专用术语,用于实现在客户端脚本与服务器之间的数据交互过程。这一技术的优点在于,它向开发者提供了一种从Web服务器检索数据而不必把用户当前正在观察的页面回馈给服务器。
对象的属性和方法:
属性 | 说明 |
---|---|
readyState | 表示XMLHttpRequest对象的状态: |
0:未初始化。对象已创建,未调用open; | |
1:open方法成功调用,但Sendf方法未调用; | |
2:send方法已经调用,尚未开始接受数据; | |
3:正在接受数据。Http响应头信息已经接受,但尚未接收完成; | |
4:完成,即响应数据接受完成。 | |
Onreadystatechange | 请求状态改变的事件触发器(readyState变化时会调用这个属性上注册的javascript函数。 |
responseText | 服务器响应的文本内容 |
responseXML | 服务器响应的XML内容对应的DOM对象 |
Status | 服务器返回的http状态码。200表示“成功”,404表示“未找到”,500表示“服务器内部错误”等。 |
statusText | 服务器返回状态的文本信息。 |
方法 | 说明 |
---|---|
Open(string method,string url,boolean asynch,String username,string password) | 指定和服务器端交互的HTTP方法,URL地址,即其他请求信息;Method:表示http请求方法,一般使用”GET”,”POST”.url:表示请求的服务器的地址;asynch:表示是否采用异步方法,true为异步,false为同步;后边两个可以不指定,username和password分别表示用户名和密码,提供http认证机制需要的用户名和密码。 |
Send(content) | 向服务器发出请求,如果采用异步方式,该方法会立即返回。content可以指定为null表示不发送数据,其内容可以是DOM对象,输入流或字符串。 |
SetRequestHeader(String header,String Value) | 设置HTTP请求中的指定头部header的值为value.此方法需在open方法以后调用,一般在post方式中使用。 |
getAllResponseHeaders() | 返回包含Http的所响应头信息,其中相应头包括Content-length,date,uri等内容。返回值是一个字符串,包含所有头信息,其中每个键名和键值用冒号分开,每一组键之间用CR和LF(回车加换行符来分隔) |
getResponseHeader(String header) | 返回HTTP响应头中指定的键名header对应的值 |
Abort() | 停止当前http请求。对应的XMLHttpRequest对象会复位到未初始化的状态。 |
XMLHttpRuquest使用
1. 创建XMLHttpRuquest对象:
var xmlhttprequest;
if(window.XMLHttpRequest){
xmlhttprequest=new XMLHttpRequest();
if(xmlhttprequest.overrideMimeType){
xmlhttprequest.overrideMimeType("text/xml");
}
}else if(window.ActiveXObject){
var activeName=["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
for(var i=0;i<activeName.length;i++){
try{
xmlhttprequest=new ActiveXObject(activeName[i]);
break;
}catch(e){
}
}
}
if(xmlhttprequest==undefined || xmlhttprequest==null){
alert("XMLHttpRequest对象创建失败!!");
}else{
this.xmlhttp=xmlhttprequest;
}
2. 注册回调方法
xmlhttp.onreadystatechange=callback;
3. 设置和服务器交互的相应参数
xmlhttp.open("GET","ajax?name=" +userName,true);
4. 设置向服务器端发送的数据,启动和服务器端的交互
xmlhttp.send(null);
5. 判断和服务器端的交互是否完成,还要判断服务器端是否返回正确的数据
//根基实际条件写callback的功能代码
function callback(){
if(xmlhttp.readState==4){
//表示服务器的相应代码是200;正确返回了数据
if(xmlhttp.status==200){
//纯文本数据的接受方法
var message=xmlhttp.responseText;
//使用的前提是,服务器端需要设置content-type为text/xml
//var domXml=xmlhttp.responseXML;
//其它代码
}
}
}