Java面试题(一) Ajax

Ajax是什么?

Ajax并不算是一种新的技术,全称是asychronous javascript and xml,可以说是已有技术的组合,主要用来实现客户端与服务器端的异步通信效果,实现页面的局部刷新,早期的浏览器并不能原生支持ajax,可以使用隐藏帧(iframe)方式变相实现异步效果,后来的浏览器提供了对ajax的原生支持

使用ajax原生方式发送请求主要通过XMLHttpRequest(标准浏览器)、ActiveXObject(早期的IE浏览器)对象实现异步通信效果

那Ajax技术是由哪些组成的呢?

基于web标准(standards-basedpresentation)XHTML+CSS的表示;
使用 DOM(Document ObjectModel)进行动态显示及交互;
使用 XML 和 XSLT 进行数据交换及相关操作;
使用 XMLHttpRequest 进行异步数据查询、检索;
使用 JavaScript 将所有的东西绑定在一起。


为什么要用Ajax?它的优点是什么?

通过异步模式,提升了用户体验

优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占用

Ajax在客户端运行,承担了一部分本来由服务器承担的工作,减少了大用户量下的服务器负载。

Ajax使WEB中的界面与应用分离(也可以说是数据与呈现分离)

它的特点以及缺点?

特点

Ajax可以实现动态不刷新(局部刷新)

就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变过的信息。

缺点

Ajax不支持浏览器的back按钮

安全问题 AJAX暴露了与服务器交互的细节。

对搜索引擎的支持比较弱。

破坏了程序的异常机制。

Ajax请求总共有多少种CallBack?

onSuccess
onFailure
onUninitialized
onLoading
onLoaded
onInteractive
onComplete

onException

Ajax工作原理?

Ajax的工作原理相当于在用户和服务器之间加了—个中间层,使用户操作与服务器响应异步化。并不是所有的用户请求都提交给服务器,像—些数据验证和数据处理等都交给Ajax引擎自己来做, 只有确定需要从服务器读取新数据时再由Ajax引擎代为向服务器提交请求。

Ajax其核心只有JavaScript、XMLHttpRequest和DOM,在旧的交互方式中,由用户触发一个HTTP请求到服务器,服务器对其进行处理后再返回一个新的HTHL页到客户端, 每当服务器处理客户端提交的请求时,客户都只能空闲等待,并且哪怕只是一次很小的交互、只需从服务器端得到很简单的一个数据,都要返回一个完整的HTML页,而用户每次都要浪费时间和带宽去重新读取整个页面。而使用Ajax后用户从感觉上几乎所有的操作都会很快响应没有页面重载(白屏)的等待。

细说XMLHttpRequest(你真的了解它吗?)

XMLHttpRequest一开始只是微软浏览器提供的一个接口,后来各大浏览器纷纷效仿也提供了这个接口,再后来W3C对它进行了标准化,提出了XMLHttpRequest标准,XMLHttpRequest标准分为Level 1和Level 2。

XMLHttpRequest  Level 1主要存在以下几个缺点

受到同源策略的限制,不能够发送跨域请求

不能够发二进制文件(如图片、视频、音频等),只能发送纯文本数据

在发送和获取数据的过程中,无法实时获取进度信息,只能判断是否完成

什么是同源策略?怎么解决跨域请求的问题?

这里我加上我的理解简单的说一下什么是同源策略

同源策略是一种约定,是浏览器最核心也最基本的安全功能。保证用户信息的安全,防止恶意的网站窃取数据。

打个比方说吧!张三使用浏览器登录了网站A进行购物,然后又登录网站B,这时候如果网站B能够拿到网站A的Cookie的信息,就会泄露用户的相关隐私信息,也有可能被他人非法使用,甚至破坏等等!

同源策略需要同时满足以下三点要求

协议相同

域名相同

端口相同

http:www.test.com与https:www.test.com 不同源——协议不同 
http:www.test.com与http:www.admin.com 不同源——域名不同 

http:www.test.com与http:www.test.com:8081 不同源——端口不同

只要不满足其中任意一个要求,就不符合同源策略,就会出现“跨域”。 最常见的形式是使用ajax请求数据。

那么如何解决跨域请求的问题呢?

JSONP方式

CORS方式

代理请求方式


Level 2对Level 1进行了改进,新增了一下功能

可以发送跨域请求,在服务端允许的情况下;

支持发送和接收二进制数据;

新增formData对象,支持发送表单数据;

发送和获取数据时,可以获取进度信息;

可以设置请求的超时时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值