ajax异步刷新与iframe刷新对比

  • Post author:
  • Post category:其他


ajax异步刷新与iframe刷新对比


(2010-05-11 11:09:58)


标签:


杂谈


分类:


ajax
在ajax没出来之前,一直是用iframe实现的无刷新请求。

主要的原理是:

使用js创建一个隐藏的iframe

把要提交的表单的target属性指向1中生成的iframe

在请求的页面中回调父页面的方法

这样就实现了一个简单的“异步提交”

看起来和ajax一样的效果,那为什么还要有ajax,我们来比较下:(以下把ajax技术称为XHR,iframe实现的称为iframe)

XHR 和 iframe的区别主要在4个地方:

多线程

从上面说的原理很容易就能看出利用iframe实现的异步请求,其实也还是同步的,也就是说后台在处理这个请求的时候,前台仍然是什么都不能做的;而XHR是真正实现了异步请求,它能发起多个异步请求。



回退键

键盘上上的回退键的主要功能是退回到上一个历史页面。

利用iframe实现的异步请求,按回退键是可以回到上个历史页面的;而XHR不行,因为它根本没有留下任何历史的痕迹。

所以现在大多数的搜索引擎是没有利用ajax实现搜索的。

跨站访问

利用iframe实现的异步请求,请求的地址是可以是本应用外的服务;而XHR只能请求本应用的服务。

注意:只要是不用域名的都会被拒绝访问,无论是子域名访问父域名,还是父域名访问子域名

请求的状态


想要在请求返回的同时得到请求的状态(status),iframe实现的异步请求是做不到的;而XHR可以轻而易举的做到。



所以让我们来总结下到底什么时候该选择哪种异步请求:

iframe实现的异步请求

除了这次的请求,没有其他并发的请求

请求的响应时间很短暂,否则用户体验会很差

跨域的请求

能返回历史页面

XHR实现的异步请求

并发的异步请求

根据准确的请求状态做事件响应 ……