Ajax是几种技术的聚合:
- 服务器端语言
- XML
描述数据的格式 - XTML
使用HTML和CSS标准化呈现 - DOM
实现动态现实和交互
使用XMLHTTP组件XMLHttpRequest对象进行异步数据读取
使用JavaScript绑定和处理所有数据
Ajax的缺陷
- 由js和Ajax引起导致的浏览器的兼容
- 页面局部刷新,导致后退等功能失效
- 对流媒体的支持没有FLASH、Java Applet好
- 一些手持设备(如手机、PDA等)支持性差
XMLHttpRequest的方法
- abort()———停止当前请求
- getAllResponseHeaders()——把HTTP请求的所有响应首部作为键/值对返回
- getResponseHeader()——返回指定首部的串值
- open(“method”,“url”)——建立对服务器的调用。Method参数可以是GET、POST或PUT。url参数可以是相对URL或绝对URL
- send(content)——向服务器发送请求
- setRequestHeader(“header”,“value”)——把指定首部设置为所提供的值,在设置任何首部之前必须调用open()
XMLHttpRequest的属性
- onreadystatechange(readyState改变触发)——每个状态改变都会触发这个事件处理器,通常会调用一个JavaScript函数
- readyState——请求的状态,有5个可取值:0=未初始化,1=正在加载,2=已经加载,3=交互中,4=完成
- responseText——服务器的响应,表示为一个串
- responseXML——服务器的相应,表示为XML,这个对象可以解析为DOM对象
- status——服务器的HTTP状态码
- statusText——HTTP状态码的相应文本(OK或NotFound等)
发送和接收
发送示例:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<script type="text/javascript">
alert("abc");
document.getElementsByTagName("a")[0].onclick=function(){
var request=new XMLHttpRequest();
var url=this.href;
var method="GET";
request.open(method,url);
request.send(null);
request.onreadystatechange=function(){
if(request.readyState==4){
if(request.status==200||request.status==304){
alert(request.responseText);
}
}
return false;
}
}
</script>
</head>
<body>
<a href="helloAjax.txt">helloAjax</a>
</body>
</html>
运行结果: