1.什么是AJAX:

       AJAX (Asynchronous JavaScript and XML,异步JavaScript 与 XML)是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX 可        以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。传统的网页(不使用 AJAX)如果需要更新内容,必需重载                        整个网页面。

2.同步交互方式:

       Ⅰ. 传统Web网页采用同步交互方式,用户向服务器发送一个请求,然后Web服务器根据用户请求进行后台运行,并返回结果。即一种“处理——等待——处理                                —— 等待”模式。

       Ⅱ.  不流畅的执行交互方式,用户在访问网站的过程中,经常会出现长时间等待服务器响应,导致浏览器显示白屏的情况。

        Ⅲ. 用户往往只更新页面中的一小部分信息,而不是整个页面,数据的重复传递,延长了用户等待时间,浪费了大量的网络资源和带宽。

       Ⅳ. AJAX采用异步交互方式,在客户端与服务器之间引用一个中间层。用户的浏览器在执行请求时,使用AJAX技术转发客户端请求与服务器交互,                  JavaScript通过使用AJAX技术可以使页面不再被整体刷新,只仅仅更新用户需要的部分。

3.AJAX的好处:

      减轻服务器的负担,加快浏览速度。

      更多的用户交互,带来更好的用户体验。

      基于标准化并被广泛支持的技术,不用下载插件,现在浏览器都可以很好的支持AJAX技术。

       进一步促进页面呈现与数据分离。

4.XMLHttpRequest对象属性/方法:

      

属性/方法

about()

取消请求

getAllResponseHeaders()

获取响应的所有http

getResponseHeader()

获取指定http

open(method,url)

创建请求,method请求类型,(GET,POST)

send()

发送请求

setRequestHeader()

指定请求的Http

属性/方法

readyState属性

HTTP 请求的状态

0:未初始化。未调用open()方法

1:启动。已经调用open()方法,未调用send()方法,请求还没有被发送

2:发送。已经调用send()方法,HTTP 请求已发送到 Web 服务器。未接收到响应

3:接收。已经接收到部分数据

4:完成。HTTP 响应已经完全接收。

每次这个属性的值增加的时候,都会触发 onreadystatechange 事件句柄

responseText

服务器返回文本,目前为止为服务器接收到的响应体(不包括头部),或者如果还没有接收到数据的话,就是空字符串。如果 readyState 小于 3,这个属性就是一个空字符串。当 readyState 为 3,这个属性返回目前已经接收的响应部分。如果 readyState 为 4,这个属性保存了完整的响应体。

属性/方法

responseXML

服务器返回XML,可以当作DOM处理

status

服务器返回的HTTP请求响应值:

200表示请求成功

202表示请求被接收但未处理完成

400表示错误的请求

404表示资源未找到,  "Not Found" 错误

500 表示内部服务器错误

        创建完XMLHttpRequest对象后需要利用open()方法建立并向服务器发送一个请求      open(method,url,async)

        method表示请求类型,通常为GET、POST等,url表示请求的地址,可以是绝对地址也可以是相对地址,async是一个布尔值表示是否为异步请求,默认值为异步请求        true。                                                                                                                        xmlHttp.open("get","data.txt", true);

  这段代码表示使用GET方法异步请求相对地址data.txt文件,再发出请求以后根据readyState属性来判断目前请求的情况,如果该属性发生变化,就会触发               onreadystatechange事件,可以通过以下代码处理。

xmlHttp.onreadystatechange = function () {

    if (xmlHttp.readyState == 4) {

        alert(xmlHttp.responseText);

    }

}

同时还需要判断服务器返回响应的状态status修改以上代码:

xmlHttp.onreadystatechange = function () {

    if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {

        alert(xmlHttp.responseText);

    }

}

通过以上两段代码我们完成了请求的建立,并对请求状态进行了事件的注册,当请求状态发生变化时进行处理,但是并没有将请求发送到服务端,这里就需要使用send()方法发送请求。

      send(body)

send方法只有一个参数body,表示向服务器发送的数据,格式可以字符串方式传递数据。

       send(name=’jack’&id=28);

如果在open中指定GET方式,这些参数作为查询字符串提交,如果指定的时POST方式,则作为HTTP的POST方法提交。对于send方法body参数时必须的,如果不发送数据可以使用以下代码:

       xmlHttp.send(null);

如果使用POST方式提交数据,需要在提交之前设置以下请求的头部。

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

 5.GET方法:

      从指定的资源请求数据。查询字符串(名称/值对)是在 GET 请求的 URL 中发送的:

      /products?type=1&order=desc

          GET方法的特点“:

            GET 请求可被缓存

            GET 请求保留在浏览器历史记录中

            GET 请求可被收藏为书签

            GET 请求不应在处理敏感数据时使用

            GET 请求有长度限制

            GET 请求只应当用于取回数据

6.POST方法:

      向指定的资源提交要被处理的数据,是在 POST 请求的 HTTP 消息主体中发送的如下:

      xmlHttp.send("name=value1&password=value2");

      同时需要设置请求头部请求内容的类型:

          xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

          POST方法特点:

            POST 请求不会被缓存

            POST 请求不会保留在浏览器历史记录中

            POST 不能被收藏为书签

            POST 请求对数据长度没有要求

7.其他HTTP请求方法:

方法

HEAD

与 GET 相同,但只返回 HTTP 报头,不返回文档主体。

PUT

上传指定的 URI 表示。

DELETE

删除指定资源。

OPTIONS

返回服务器支持的 HTTP 方法。

CONNECT

把请求连接转换到透明的 TCP/IP 通道。