Ajax
Ajax(基础运用)
1.什么是Ajax?
Ajax是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术
Ajax的全称为Asynchronous javaScript and XML,即异步javaScript+XML,他并不是新的编程语言,而是几种原有的技术结合体
2.Ajax是由哪几种技术的结合体?
1.HTML/XHTML—-主要的内容表示语言
2.CSS—-为XHTML提供文本格式定义
3.DOM—对已经加载的页面进行动态更新
4.XSLT—-将XML转换成XHTML(用CSS修饰样式)
5.XMLHttp—-用xmlHttpRequest来和服务器进行异步通信,是主要的通信代理
6.javaScript—-用来编写Ajax引擎的脚本语言
实际上,在Ajax解决方案中这些技术都是可用的,不过只是三种必须的:HTML/XHTML,DOM以及javaScript
3.XMLHttpRequest对象
当数据异步与服务器进行交换时,需要XMLhttpRequest对象来异步交换,XMLHttpRequest对象的主要属性有:
onreadystatechange—每次状态改变所触发事件的处理程序(俗称回调函数)
responseText—从服务器进程返回数据的字符串形式
responseXML—从服务器上进程返回的Dom兼容的文档数据对象
status—从服务器上返回的数字代码,如404(未不到),200(正常)什么的。
status Text—伴随状态码的字符串信息
readyState—对象状态值,对象状态值有以下:
0-(未初始化)还没有调send()方法
1-(载入)已调用send()方法,正在发送请求
2-(载入完成)send()方法执行完成
3-(交互)正在解析相应内容
4-(完成)响应内容解析完成,可以在客户端调用了
对于readyState的状态值,其中“0”状态是在定义后自动具有的状态值,而对于成功访问的状态(得到信息)我们大多数采用“4”来进行判断
Ajax的核心就是javaScript对象XmlHttpRequest,这个对象为服务器发送请求和解析响应提供了流畅的接口,XmlHttpRequest可以使用javaScript向服务器提出请求并处理响应,为不堵塞用户
XMLHttpRequest对象用法
XMLHttpRequest对象有两个方法: open和send
open(method,url,async):规定请求的类型,URL以及是否异步处理请求
menthod:请求的类型:get或者post
url:文件在服务器上的位置
async:true(异步)或者false(同步)…… 一般这个可以省略的比如:open(“post”,“/save”)默认为true;
send(String)将请求发送到服务器
String: 仅用于POST请求
对于open方法,有几点需要注意:
1.URL是相当于当前页面的路径,也可以似乎用绝对路径
2.open方法不会向服务器发送真正请求,它相当于初始化请求准备发送
3.只能向同一个域中使用相同协议和端口的URL发送请求,否则会因为安全报错
真正能够向服务器发送请求需要调用send方法,并仅在POST请求可以传输参数,不需要则发送null,在调用send方法之后请求被发往服务器。
请求发往服务器,服务器根据请求生成响应(Response),传回给XHP对象,在收到响应后相应数据会填充到XHP对象的属性,有四个相关属性会被填充
responseText—从服务器进程返回数据的字符串形式
responseXML—从服务器进程返回的DOM兼容的文档数据对象
status—从服务器上返回的数字发代码,如404和200
syayus Text—伴随状态码的字符串信息
javaScript解析XML API
名称 类型 作用
getELementsByTagName(name) 方法 返回当前元素中指定标记名的元素数组
childNodes 属性 返回当前元素所有子元素的数组
nodeValue 字符串 获取节点值:如果节点为元素,返会 null或undefind;如果节点为文本,返回文本值
getAttribute 方法 返回元素的属性值,属性有name指定
AJAX的请求过程实列
<script type=“text/javascript”>
function ajaxFunction() {
var xmlHttp=GetXmlHttpObject();//定义XMLHttpRequest对象
xmlHttp.open(“GET”,“****.ashx”,true)//设置请求方法,请求的目标页面,以及是否异步
xmlHttp.setRequestHeader(“If-Modified-Since”,“0”);
xmlHttp.onreadystatechange=function(){ //定义XMLHttpRequest对象的onreadystatechange属性
if(xmlHttp.readyState==4) { //判断XMLHttpRequest对象的状态
if(xmlHttp.status==200){
document.myForm.time.value=xmlHttp.responseText;//通过XMLHttpRequest对象的responseText属性获取回传的数据
}
}
}
xmlHttp.send(null);//发送异步请求
} </script>