Ajax及其应用

什么是Ajax?

  1. AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步的Javascript和XML”。即使用javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML)。
    2.Ajax不是新的编程语言,而是一种使用现有标准的新方法。其实就是js自带的功能 我们学习的是jQuery封装之后版本

Ajax的优缺点
1.Ajax最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。
(这一特点给用户的感受是在不知不觉中完成请求和响应过程) 
2.Ajax不需要任何浏览器插件,但需要用户允许javaScript在浏览器上执行。
同步交互: 客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求。
异步交互: 客户端发出一个请求后,无需要等待服务器响应结束,就可以发出第二个请求。
Ajax用于"局部刷新页面"和"异步提交"的特点 
异步提交: 提交完认为不需要原地等待,立马就做其他事
局部刷新: 不在局限于整个页面的刷新,而是在于局部的某一个页面的小块刷新
因此和使用Form表单和后端进行数据交互的方式比较,具有以下优点:
1.Ajax使用JavaScript技术向服务器发送异步请求
2.Ajax请求无须刷新整个页面
因为服务器响应内容不再是整个页面,而是页面中的部分内容,所以Ajax性能高!

Ajax工作原理
1.Ajax相当于在用户和服务器之间加了一个中间层(Ajax引擎),使用户操作与服务器响应异步化。
2.并不是所有用户请求都是提交给服务器,像一些数据验证和数据处理等都交给Ajax引擎自己来做,只有确定需要从服务器读取数据时再由Ajax引擎代为向服务器提交请求。
3.客户端发送请求,请求交给Ajax,Ajax把请求提交给服务器,服务器进行业务处理,服务器响应数据交给Ajax对象,Ajax对象接收数据,由JavaScript把数据写到页面上。
要完整实现一个Ajax异步调用和局部刷新,同窗需要以下几个步骤:
 
1.创建XMLHttpRequest对象,既创建一个异步调用对象
2.创建一个新的HTTP请求,并指定该HTTP请求的方法,URL及验证信息

3.设置响应HTTP请求状态变化的函数
4.发送HTTP请求
5.获取异步调用返回数据
6.使用JavaSciript和DOM实现局部刷新
注意:
Ajax传输数据为XML(当然,传输数据不只是XML,现在更多使用json数据,基本上web页面都是Ajax)

XMLHttpRequest 对象属性

1.readyState

  数值,只读属性,表示请求的状态码,具体值如下表

 

状态

描述

0 

UNSENT

表示对象被创建,但尚未调用 open() 方法

1 

OPENED

表示 open() 方法已经被调用

2

HEADERS_RECEIVED

表示send()方法已被调用,并且头部和状态已经可以获得

3 

LOADING

表示数据接收中,responseText 属性已经包含部分数据

4 

DONE

表示数据接收已经完成

  1. Onreadystatechange

 可写属性,期望得到一个函数,用作 readystatechange 事件的处理方法。当 readyState 属性的值发生变化时,该函数会被调用。

  注 1:该方法不应用于同步的 XMLHttpRequest 请求。

  注 2:当 XMLHttpRequest 的请求被 abort() 方法取消时,readystate 会被设置为 0,此时对应的 readystatechange 事件不会被触发。

3.responseType

字符串,只读属性,用于设置请求的响应体类型,期望值如下表

描述

空字符串

相当于默认的 text

text

期望请求的响应体返回一个字符串

josn

期望请求的响应体返回一个将接收到的数据内容解析为 JSON 而创建的 JavaScript 对象

arraybuffer

期望请求的响应体返回一个包含二进制数据的 JavaScript ArrayBuffer

blob

期望请求的响应体返回一个包含二进制数据的 Blob 对象

document

期望请求的响应体返回一个 HTML Document

 或 XML XMLDocument,具体类型根据接收到数据的 MIME 类型而定

 注 1: responseType 需在 open() 方法调用之后且 send() 方法调用之前设置。

  注 2:同步的 XMLHttpRequest 请求不可修改 responseType 的值。

  注 3:服务端实际发送的响应体类型与 responseType 设置的类型不符时,请求体将为 null 。

4.response

  只读属性,表示请求的响应体,其值的类型由 responseType 属性决定。

  注: responseType 的值为空字符串或 'text' 情况下,当 readyState 属性的值为 3 时即可通过 response 属性读取该请求目前为止已经取得的数据。其他情况下,未完成或未成功的请求,response 都为 null。

5.responseText

  字符串,只读属性,表示请求发送后服务端返回的文本。

  注 1: send() 方法未调用时,responseText 为空字符串;请求失败时,responseText 为 null 。

  注 2: 同 response 属性一样,当 readyState 属性的值为 3 时 responseText 返回目前为止服务端响应的文本内容,当readyState 为 4 且 status 属性为 200 时,responseText 返回后端响应的全部数据。

6.status

  数值,只读属性,返回服务端响应的数字状态码。

  注 1: 请求完成前或 XMLHttpRequest 出错时,status 的值为 0 。

  注 2: 如果服务响应中没有明确指定 status 码,则默认为 200。

7.statusText

  字符串,只读属性,返回服务端响应状态码对应的文本信息。

  注 1: 如果 readyState 的值为 0 或者 1,则这个 statusText 返回空字符串。

  注 2: 如果服务响应中没有明确指定,则默认为 OK。

8.timeout

  可写属性,期望得到一个正整数,表示请求的最大毫秒数,超时后请求将自动终止,并触发超时事件。

  注 1: 默认值为 0,表示无超时时间。

  注 2: 在IE中,超时属性可能只能在调用 open() 方法之后且在调用 send() 方法之前设置。

9.ontimeout

  可写属性,期望得到函数,用作请求超时事件的处理函数。

  注: 只有设置了 timeout 属性才可能发生超时事件 。

10.withCredentials

可写属性,布尔值,用来指定跨域 Access-Control 请求是否应当带有授权信息,如 cookie 或授权 header 头。

XMLHttpRequest 对象方法

1.open()

说明:用于初始化一个 http 请求。已经调用过该方法的 xhr 对象再次调用该方法时,相当于调用 abort() 方法。

参数:(method, url[, async[, name[, password]]])

method

字符串,表示要使用的 HTTP 方法,如 GET、POST 等。对于非 HTTP(S) URL,该参数会被忽略。

url

字符串,表示要向其发送请求的 URL。

async

布尔值,可选,表示是否异步发送请求,默认值为 true。值为 false 时,send() 方法将阻塞,直至请求结束。

user

可选,表示用户名,用于认证,默认为null。

password

可选,表示密码,用于认证,默认为null。

2.setRequestHeader()

说明:设置 HTTP 请求头的值。必须在 open() 之后、send() 之前调用 setRequestHeader() 方法。

参数:(header, value)

header

请求头属性的名称。

value

请求头属性的值。

3.send()

说明:用于发送 HTTP 请求。请求方式为 GET 或 HEAD 时,参数应为 null.

参数:(body)

body

可选,默认为 null,类型可以是 Document、Blob、ArrayBufferView、FormData, URLSearchParams, 或者字符串。

getResponseHeader()

说明:获取包含指定响应头文本的字符串。

参数:(name)

name

表示响应头属性的字符串,不区分大小写。

返回值:响应头属性的值,采用 UTF 编码。

注 1:如果请求尚未返回响应头,或不存在该响应头属性,或者被 W3C 限制时,返回 null。

注 2: readyState 属性的值为 2 ,即状态为 HEADERS_RECEIVED 时,表示响应头已经返回。

4.getAllResponseHeaders()

说明:获取所有的响应头,以 \r\n 分割字符串。

参数:无

返回值:字符串,所有的响应头,无响应时返回 null。

注:其实并不是可以获取到所有的响应头,有些响应头需要在服务端允许才可以获取。比如下载文件时的 Content-Disposition,需要后端设置响应头 Access-Control-Expose-Headers : 'Content-Disposition' 才可以。Access-Control-Expose-Headers 可以设置允许客户端访问的响应头,其值是以逗号分隔的响应头名称。

5.abort()

说明:立即终止已经发送的请求。当一个请求被终止,它的 readyState 将被置为 0(此时并不会触发 onreadystatechange 事件),并且请求的 status 也置为 0。

注:调用 abort() 方法后,xhr 对象上会依次触发以下事件:readystatechange (此时 readyState 为 4)、abort (此时 readyState 为 0)和 loadend。

6.overrideMimeType()

说明:覆写由服务端返回的 MIME 类型,该方法较少使用到。

参数:(mimeType)

mimeType

字符串,指定具体的 MIME 类型去代替服务器指定的MIME类型,如果服务器没有指定类型,那么 XMLHttpRequest 将会默认为 "text/xml"。

场景举例:强制使流方式处理响应类型为 "text/xml" 类型的数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值