Ajax
ZGuangJu
2/21/2019
前端基础
Ajax
ajax步骤
-
创建异步对象
创建
XMLHttpRequest()
对象
-
给异步对象绑定事件
设置响应
HTTP
请求状态变化的回调函数
xmlHttpRequest.onreadystatechange=function(){}
设置获取服务器返回数据的语句
-
设置获取服务器返回数据的语句
创建完
HTTP
请求之后,应该就可以将
HTTP
请求发送给
Web
服务器了。然而,发送
HTTP
请求的目的是为了接收从服务器中返回的数据。从创建
XMLHttpRequest
对象开始,到发送数据、接收数据、
XMLHttpRequest
对象一共会经历以下
5
中状态。
-
未初始化状态--
0
。在创建完
XMLHttpRequest
对象时,该对象处于未初始化状态,此时
XMLHttpRequest
对象的
readyState
属性值为
0
。
-
初始化状态--
1
。在创建完
XMLHttpRequest
对象后使用
open()
方法创建了
HTTP
请求时,该对象处于初始化状态。此时
XMLHttpRequest
对象的
readyState
属性值为
1
。
-
发送数据状态--
2
。在初始化
XMLHttpRequest
对象后,使用
send()
方法发送数据时,该对象处于发送数据状态,此时
XMLHttpRequest
对象的
readyState
属性值为
2
。
-
接收数据状态--
3
。
Web
服务器接收完数据并进行处理完毕之后,向客户端传送返回的结果。此时,
XMLHttpRequest
对象处于接收数据状态,
XMLHttpRequest
对象的
readyState
属性值为
3
。
-
完成状态--
4
。
XMLHttpRequest
对象接收数据完毕后,进入完成状态,此时
XMLHttpRequest
对象的
readyState
属性值为
4
。此时接收完毕后的数据存入在客户端计算机的内存中,可以使用
responseText
属性或
responseXml
属性来获取数据。
只有在
XMLHttpRequest
对象完成了以上
5
个步骤之后,才可以获取从服务器端返回的数据。因此,如果要获得从服务器端返回的数据,就必须要先判断
XMLHttpRequest
对象的状态。
XMLHttpRequest
对象可以响应
onreadystatechange
事件,该事件在
XMLHttpRequest
对象状态改变时(也就是
readyState
属性值改变时)激发。因此,可以通过该事件调用一个函数,并在该函数中判断
XMLHttpRequest
对象的
readyState
属性值。如果
XMLHttpRequest
对象的
readyState
属性值等于
4
,表示异步调用过程完毕,就可以通过
XMLHttpRequest
对象的
responseText
属性或
responseXml
属性来获取数据。
但是,异步调用过程完毕,并不代表异步调用成功了,如果要判断异步调用是否成功,还要判断
XMLHttpRequest
对象的
status
属性值,只有该属性值为
200
,才表示异步调用成功,因此,要获取服务器返回数据的语句,还必须要先判断
XMLHttpRequest
对象的
status
属性值是否等于
200
,如以下代码所示:
注意:如果
HTML
文件不是在
Web
服务器上运行,而是在本地运行,则
xmlHttpRequest.status
的返回值为
0
。因此,如果该文件在本地运行,则应该加上
xmlHttpRequest.status == 0
的判断。
通常将以上代码放在响应
HTTP
请求状态变化的函数体内,如以下代码所示:
-
初始化异步请求对象
open()
创建
HTTP
请求
创建了
XMLHttpRequest
对象之后,必须为
XMLHttpRequest
对象创建
HTTP
请求,用于说明
XMLHttpRequest
对象要从哪里获取数据。通常可以是网站中的数据,也可以是本地中其他文件中的数据。
创建
HTTP
请求可以使用
XMLHttpRequest
对象的
open()
方法,其语法代码如下所示:
参数如下:
-
method
:该参数用于指定
HTTP
的请求方法,一共有
get
、
post
、
head
、
put
、
delete
五种方法,常用的方法为
get
和
post
。
-
URL:
该参数用于指定
HTTP
请求的
URL
地址,可以是绝对
URL
,也可以是相对
URL
。
-
flag:
该参数为可选,参数值为布尔型。该参数用于指定是否使用异步方式。
true
表示异步、
false
表示同步,默认为
true
。
-
name:
该参数为可选参数,用于输入用户名。如果服务器需要验证,则必须使用该参数。
-
password:
该参数为可选,用于输入密码。若服务器需要验证,则必须使用该参数。
通常可以使用以下代码来访问一个网站文件的内容。
或使用以下代码来访问一个本地文件内容: