分享

Ajax技术原理介绍

 悟静 2011-06-20

Ajax全称为 Asynchronous Javascript and XML (异步Javascript和XML),是指一种创建交互式网页应用的网页开发技术。

Ajax的核心是Javascript的XmlHttpRequest对象,该对象在IE5中首次引入,它是一种支持异步请求的技术,简而言之,XmlHttpRequest可以使用Javascript向服务器提出请求并处理响应,而不阻塞用户。

Ajax原理:
通过XmlHttpRequest对象来向服务器发送异步请求,从服务器获得数据,然后用Javascript来操作DOM更新页面。

主要包含的技术:

基于Web标准的XHTML和CSS
使用DOM(Document Object Model)进行动态显示及交互
使用XML和XSLT进行数据交换及相关操作
使用XMLHttpRequest进行异步数据查询,检索
使用Javascript来绑定和调用


XmlHttpRequest对象的属性:

onreadystatechange 每次状态改变所触发事件的事件处理程序
responseText 从服务器进程返回的字符串形式
responseXML 从服务器进程返回的DOM兼容的文档数据对象
status 从服务器返回的数字代码,比如常见的404(未找到)和200(已就绪)
statusText 描述了HTTP状态代码文本;并且仅当readyState值为3或4才可用。当readyState为其它值时试图

存取statusText属性将引发一个异常
readyState 对象状态值
 0:(未初始化)对象已建立,但是尚未初始化(尚未调用open方法)
 1:(初始化)对象已建立,代码已经调用了open()方法并且已经准备好把一个请求发送到服务器,尚未调用send方法
 2:(发送数据)send方法已调用,但是还没有收到一个响应
 3:(数据传输中)已接收HTTP响应头部分数据,但是消息体部分还没有完全接收结束,这时通过responseXML和ResponseText获取部分数据会出现错误
 4:(完成)数据接收完成,此时可以通过responseXML和responseText获取完整的响应数据

XMLHttpRequest对象的方法:

open()

函数原型:
open(DOMString method,DOMString uri,boolean async,DOMString username,DOMString password)
参数说明:
第一个是发送请求的HTTP方法(GET,POST,PUT,DELETE或HEAD)
第二个用于指定XMLHttpRequest对象发送请求的URL地址
第三个参数指定是否异步发送请求,默认为true,为了发送一个同步请求,需要设置为false
第四个参数和第五个参数对于要求认证的服务器提供用户名和密码

send()

在通过调用open()方法准备好一个请求之后,你需要把该请求发送到服务器。仅当readyState值为1时,你才可以调用send()方法;否则的话,XMLHttpRequest对象将引发一个异常。该请求被使用提供给open()方法的参数发送到服务器。当async参数为true时,send()方法立即返回,从而允许其它客户端脚本处理继续。在调用send()方法后,XMLHttpRequest对象把readyState的值设置为2(发送)。当服务器响应时,在接收消息体之前,如果存在任何消息体的话,XMLHttpRequest对象将把readyState设置为3(正在接收中)。当请求完成加载时,它把readyState设置为4(已加载)。对于一个HEAD类型的请求,它将在把readyState值设置为3后再立即把它设置为4。send()方法使用一个可选的参数-该参数可以包含可变类型的数据。典型地,你使用它并通过POST方法把数据发送到服务器。另外,你可以显式地使用null参数调用send()方法,这与不用参数调用它一样。对于大多数其它的数据类型,在调用send()方法之前,应该使用setRequestHeader()方法(见后面的解释)先设置Content-Type头部。如果在send(data)方法中的data参数的类型为DOMString,那么,数据将被编码为UTF-8。如果数据是Document类型,那么将使用由data.xmlEncoding指定的编码串行化该数据。

abort()

暂停与一个XMLHttpRequest对象相联系的HTTP请求,从而把该对象复位到未初始化状态

setRequestHeader()

该setRequestHeader(DOMString header,DOMString value)方法用来设置请求的头部信息。当readyState值为1时,你可以在调用open()方法后调用这个方法;否则,你将得到一个异常。

getResponseHeader()

getResponseHeader(DOMString header,value)方法用于检索响应的头部值。仅当readyState值是3或4(换句话说,在响应头部可用以后)时,才可以调用这个方法;否则,该方法返回一个空字符串。

getAllResponseHeaders()

该getAllResponseHeaders()方法以一个字符串形式返回所有的响应头部(每一个头部占单独的一行)。如果

readyState的值不是3或4,则该方法返回null。

Ajax应用的优势:

1. 通过异步数据传输,提高用户体验
2. 减少不必要的数据传输,节省带宽资源
3. 减轻服务器负担

Ajax应用的缺陷:

1. 不利于搜索引擎的优化
2. 破坏了浏览器的后退机制

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多