当前位置: IT培训 > HTML5培训 > 前端开发 > HTML5 > AJAX局部刷新技术
AJAX局部刷新技术 时间:2017-05-15     来源:移动互联网学院

在2005年之前的网站提交数据时会全部刷新整个页面交给服务器处理,而当前大多数的网站都是交互型网站,时刻上传数据但是不刷新整个页面只刷新部分区域。交互式网站简言之,就是能够实现上网者与管网者进行交流互动的网站。而交互型网站必须使用AJAX技术实现异步刷新。

AJAX应用可以仅向服务器发送并取回必需的数据,并在客户端采用JavaScript处理来自服务器的响应。因此在服务器和浏览器之间交换的数据大量减少,同时很多的处理工作可以在发出请求的客户端机器上完成,所以Web服务器的处理时间也减少了。

AJAX的优点:

1.不需要插件支持,被大多浏览器支持,但需要用户允许JavaScript在浏览器上执行

2.不刷新整个页面更新数据,Web应用能够迅速的回应用户的请求

3.并不是全部数据传输,仅仅通过XMLHttpRequest对象传输部分数据,按需传输,效率高

4.相当于在客户端和服务端建立了中间层,在客户端创建Ajax引擎,把服务器端的部分工作任务交给浏览器完成

1) 当事件源触发对应的事件,想访问后台数据库中的数据时,将会通过JavaScript创建出XMLHttpRequest对象来实现异步刷新,依赖该对象做出事件处理。

2) 通过XMLHttpRequest对象建立和后台服务器的连接,请求信息由该对象进行发送。

3) 后台服务器代码收到XMLHttpRequest对象发送的信息后,根据信息内容操作后台数据库,并将结果进行输出,但输出的内容并不会直接显示在浏览器,而是传递给了XMLHttpRequest对象。也就是,经过第二步两者建立了连接之后,后台输出的任何信息都会直接传递给XMLHttpRequest对象。

4) 后台输出信息给XMLHttpRequest对象后,该对象需要通过属性判断信息是否是服务器传递来的,并且做出接收信息等操作。接收到信息后XMLHttpRequest做出相应的事件处理。

5) 总结:对于异步刷新功能,AJAX完全依赖XMLHttpRequest对象实现,也就是说该对象时AJAX的核心。

当事件触发希望通过XMLHttpRequest与后台建立连接进行访问数据时,通过open()函数与后台建立连接,并通过send()函数发送浏览器传输的信息。

open函数的参数:

参数1:提交方式,get或post提交

参数2:提交的url,指定提交给谁,以及提交的数据内容

参数3:异步传输还是同步传输

当后台发送数据给浏览器时,浏览器需要通过XMLHttpRequest对象中的onreadystatechange属性进行判断,该属性通常指向一个函数,当网络状态由发送数据到接收数据状态改变时将会调用。对应方法调用后,可以通过readyState和status判断信息是否是来自服务器并且接收完毕。若是来自于服务器的信息,应该通过responseText或者responseXML接收。

在判断请求信息状态时,readyState的状态会由0-4发生变化,当创建完毕XMLHttpRequest对象时readyState=0;当通过open函数打开了和后台的连接时readyState=1;请求的报文头发送完毕时readyState=2;当收到主体信息后readyState=3,并且该状态可能触发多次,因为数据过大的时,后台可能分多次进行接收;当成功后,状态变为4。

若提交方式是GET方式提交,那么open函数打开和后台的连接时,就可以将信息直接放在open函数中的URL中,提交时直接通过XMLHttpRequest对象提交给后台。

若提交方式时post方式提交,HTTP协议和GET方式提交的协议不同,使用POST提交数据时,HTTP协议中需要指明这是POST方式提交,并指明提交数据的类型等,所以需要添加头信息Content-Type:application/x-www-form-urlencoding,当传输的数据中包含文件时,还需要添加其他信息。

总结:

整个AJAX中的发送数据、判断网络状态并接收数据都依赖XMLHttpRequest的对象来完成。然后服务器端正常输出和获取数据,并不是输出到浏览器而是输出给XMLHttpRequest对象交给该对象来判断并接收。

X