AJAX

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、简介

AJAX:(Asynchronnous JavaScript And XML)异步的JavaScript与XML。

AJAX 不是新的编程语言,而是一种使用现有标准的新方法。

下面是Ajax 应用程序所用到的基本技术:

①HTML 用于建立Web 表单并确定应用程序其他部分使用的字段。

②JavaScript 代码是运行Ajax 应用程序的核心代码,帮助改进与服务器应用程序的通信。

③DHTML 或Dynamic HTML,用于动态更新表单。我们将使用div、span 和其他动态HTML 元素来标记HTML。

④文档对象模型DOM 用于(通过JavaScript 代码)处理HTML 结构和(某些情况下)服务器返回的XML。

Ajax不是一种新技术,而是几种蓬勃发展的几种强大技术以新的方式组合而成,Ajax包括:基于XHTML和CSS标准的表示;使用Document Object Model进行动态的显示和交互;使用XML Request与服务器进行异步通讯;使用JavaScript绑定一切。

之前的是用户的请求直接向服务器提交。我们看一个计算的例子。

Ajax的工作原理,Ajax的核心是JavaScript和XMLHttpRequest。该对象在Internet Explorer5中首次引入,它是一种支持异步请求的技术。简单的说:XmlHttpRequest使你可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。在创建Web站点时,在客户端执行屏幕更新为用户提供了很大的灵活性能。下面是使用Ajax完成的功能:1、动态更新购物车的物品总数,无需用户单击Update并等待服务器发送整个页面。2、提升站点的性能,这是通过减少从服务器下载的数据量来实现的。例如:当更新购物车一个物品的数量时,会重新载入整个页面,这必须下载32K的数据,而使用Ajax计算新的总量,服务器只需要返回新的总量值,因此所需要的带宽仅仅为原来的百分之一。3、消除了用户每次输入时的页面刷新。例如,在Ajax中,如果用户在分页列表上单击Next,则服务器数据只刷新列表而不是整个页面。

用户的请求不再直接向服务器提交,而是使用XMLHttpRequest异步的向服务器发送,从而避免了重载页面。

特征:

异步发送请求

服务器响应的是数据不是页面内容。

2、XMLHttpRequest/ActiveXObject

XMLHttpRequest对象,现代浏览器均支持XMLHttpRequest对象(IE5 和IE6 使用ActiveXObject)。

XMLHttpRequest用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

XMLHttpRequest是整个Ajax技术的灵魂。Ajax异步发送请求,就是使用的XMLHttpRequest对象。

使用Ajax进行异步通信的过程:

创建XMLHttpRequest对象。

通过XMLHttpRequest对象向服务器发送请求。

创建回调函数,见识服务器响应状态,在服务器响应完成后,启动回调函数。

回调函数动态更新HTML页面。

创建XMLHttpRequest对象,所有现代浏览器(IE7+、Firefox、Chrome、Safari 以及Opera)都支持创建XMLHttpRequest对象的语法:

Varxhr=new XMLHttpRequest();

为了应对所有的现代浏览器,包括IE5 和IE6,请检查浏览器是否支持XMLHttpRequest对象。如果支持,则创建XMLHttpRequest对象。如果不支持,则创建ActiveXObject:

var xmlHttpRequest;

function createXMLHttpRequest() {

if(window.XMLHttpRequest) {

//火狐谷歌

window.alert("支持XMLHttpRequest");

xmlHttpRequest = new XMLHttpRequest();

}else if (window.ActiveXObject) {

//IE5 IE6

try{

xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");

window.alert("不支持XMLHttpRequest,但是是Msxml2.XMLHTTP");

} catch (e) {

try{

xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");

window.alert("不支持XMLHttpRequest,但是是Microsoft.XMLHTTP");

} catch (e) {

}

}

}

}

XMLHttpRequest对象的方法,属性和事件

方法:

1.open(method,url),

open方法的第一个参数指定HTTP方法或动作,这个字符不区分大小写,但是通常大家用大写字母匹配HTTP协议。”GET”和”POST”方法得到广泛的支持。”GET”用于常规请求,它适用于当URL完全指定请求资源,当请求对服务器没有任何副作用以及当服务器的响应式可缓存时。“POST”

方法常用于HTML表单。它在请求主体中包含额外的数据(表单数据)且这些数据长存储在服务器上的数据库中(副作用)。相同URL的重复POST 请求从服务器得到的响应可能不同,同时不应该缓存使用这个方法的请求。

2.setRequestHeader(“Content-Type”,” application/x-www-form-urlencoded”)

在使用POST方法的时候需要“Content-Type”头指定请求主体的MIME类型。

3.send()

发起HTTP请求,在使用GET请求的时候这个方法没有参数时候就写上参数null,在使用POST请求的时给这个方法传递参数

属性:

XMLHttpRequest的属性:

onreadystatechange:该属性用于指定XMLHttpRequest对象状态发生改变时的事件处理函数。

XMLHttpRequest的对象有如下几种状态:

0:XMLHttpRequest对象还没有完成初始化。

1:XMLHttpRequest对象开始发送请求。

2:XMLHttpRequest对象的请求发送完成。

3:XMLHttpRequest对象开始读取服务器的响应。

4:XMLHttpRequest对象读取服务器响应结束。

它的这几个状态可以通过下面的readyState属性读取。每当XMLHttpRequest对象的readyState属性改变时,其onreadystatechange 属性指定的方法都会被触发。

readyState:获取XMLHttpRequest对象的处理状态

responseText:获取服务器的响应文本,得到是文本形式。

responseXML:获取服务器响应的XML文档对象,得到的是xml。

status:服务器返回的状态码(数字),服务器响应完成时,才有状态码。

statusText:服务器返回的状态文本信息,服务器响应完成时,才有状态信息。

服务器的响应完成后,依然不可以直接获取服务器响应。因为服务器响应也有很多的情况。

响应状态码(status):

1xx:请求收到,继续处理

100——客户必须继续发出请求

101——客户要求服务器根据请求转换HTTP协议版本

2xx:操作成功收到,分析、接受

200——响应正常

201——提示知道新文件的URL

202——接受和处理、但处理未完成

203——返回信息不确定或不完整

204——请求收到,但返回信息为空

205——服务器完成了请求,用户代理必须复位当前已经浏览过的文件

206——服务器已经完成了部分用户的GET请求

3xx:完成此请求必须进一步处理

300——请求的资源可在多处得到

301——删除请求数据

302——在其他地址发现了请求数据

303——建议客户访问其他URL或访问方式

304——客户端已经执行了GET,但文件未变化。(资源没有任何修改)

305——请求的资源必须从服务器指定的地址得到

306——前一版本HTTP中使用的代码,现行版本中不再使用

307——申明请求的资源临时性删除

4xx:请求包含一个错误语法或不能完成

400——错误请求,如语法错误

相关文档
最新文档