ajax初探

ajax简介

  • AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。
  • AJAX = 异步 JavaScript和XML(标准通用标记语言的子集)。
  • AJAX 是一种用于创建快速动态网页的技术。

发展

  1. 在web1.0中,我们需要对页面上的数据进行更新时,需要对整个页面进行重载。这样,每次更改局部信息时,都要进行所有后台数据的全部读取。在网速缓慢的情况下,这会让用户等待时间较长。
  2. 在web2.0下,我们可以设想这样一种方式,局部的更改数据,而不是加载整个页面。
    2.1 如何更改页面信息呢?
    可以使用js,它可以将页面上的元素进行更改。学过前端的都知道,js是可以获取到页面元素,并且修改元素的。
    2.2 如何与后台进行交互?
    那么,我们必须向后台进行请求,可以用个超链接<a href='#' title='' target=_blank</a>,向后台请求。那么问题来了,页面上的很多东西都会改变,都用超链接?这不现实。
    可不可以让js和后台通过一种机制,直接交互呢?所以ajax产生了。

    工作原理

    Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。这其中最关键的一步就是从服务器获得请求数据。
    XMLHttpRequest是ajax的核心机制,它是在IE5中首先引入的,是一种支持异步请求的技术。简单的说,也就是javascript可以及时向服务器提出请求和处理响应,而不阻塞用户。达到无刷新的效果。
    • 所以我们先从XMLHttpRequest讲起,来看看它的工作原理。
        首先,我们先来看看XMLHttpRequest这个对象的属性。
        它的属性有:
      • onreadystatechange 每次状态改变所触发事件的事件处理程序。
      • responseText 从服务器进程返回数据的字符串形式。
      • responseXML 从服务器进程返回的DOM兼容的文档数据对象。
      • status 从服务器返回的数字代码,比如常见的404(未找到)和200(已就绪)
      • status Text 伴随状态码的字符串信息
      • readyState 对象状态值

        0 (未初始化) 对象已建立,但是尚未初始化(尚未调用open方法)
           1 (初始化) 对象已建立,尚未调用send方法
           2 (发送数据) send方法已调用,但是当前的状态及http头未知
           3 (数据传送中) 已接收部分数据,因为响应及http头不全,这时通过responseBody和responseText获取部分数据会出现错误,
          4 (完成) 数据接收完毕,此时可以通过通过responseXml和responseText获取完整的回应数据

ajax的使用

1. 创建XMLHTTPReq
2. 发送数据
3. 接受回调数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
var XMLHttpReq=null;
//创建Ajax引擎对象
function createXMLHttpRequest() {
try {
XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP");//IE高版本创建XMLHTTP
}
catch(E) {
try {
XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP");//IE低版本创建XMLHTTP
}
catch(E) {
XMLHttpReq = new XMLHttpRequest();//兼容非IE浏览器,直接创建XMLHTTP对象
}
}
}
//向后台发送数据
function sendGetAjaxRequest(url,text) {
createXMLHttpRequest(); //创建XMLHttpRequest对象
XMLHttpReq.open("get", url+"?"+encodeURI(text), true);
XMLHttpReq.onreadystatechange = doResult; //指定响应函数
XMLHttpReq.send(null);
}
function sendPOSTAjaxRequest(url,text) {
createXMLHttpRequest(); //创建XMLHttpRequest对象
XMLHttpReq.open("post", url, true);
XMLHttpReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
XMLHttpReq.setRequestHeader("Content-length", text.length);
XMLHttpReq.setRequestHeader("Connection", "close");
XMLHttpReq.onreadystatechange = doResult; //指定响应函数
XMLHttpReq.send(null);
}
function doResult() {
if (XMLHttpReq.readyState == 4 && XMLHttpReq.status == 200) {
//4代表执行完成
//200代表执行成功,删除当前表格
}
}

ajax的优缺点

* 优点:
    * 就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变过的信息。
    * 异步非阻塞
    * 可以把以前一些服务器负担的工作转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器和带宽的负担,节约空间和宽带租用成本。并且减轻服务器的负担,ajax的原则是“按需取数据”,可以最大程度的减少冗余请求,和响应对服务器造成的负担。
    * 基于标准化的并被广泛支持的技术,不需要下载插件或者小程序。
* 缺点:
    * 用户不知道数据是否更新
    * 无法回退
    * 安全问题  
    任何数据处理在前端,都会暴露后台
    * 对串流媒体的支持没有FLASH、Java Applet好;