阿贾克斯后备选择1 〜发出一个请求使用的iframe

隐藏作出适当的交通异步呼吁,因为他们可以加载内容,而不引起整个页面重新加载,而新的iframe元素可以创造出用javascript的。 最好属性约一个的iframe是一种形式,可以用一个为目标,即换料的iframe而不是整个页面;这种方法便于大量的数据将被送到服务器使用邮政。

  

一个个难关,在使用的iframe作为交通工具是页面我们正在装载需要以html的,它需要有一个javascript有载事件处理器告诉父母文件时,它的完成装载。 这需要力量,所有的请求正在取得页面将作出页面设计,以应付的iframe的要求。 (代码不能只抓一个xml文件中的方式xmlhttprequest允许) 。

注说,使用隐藏确有一些进一步的限制:

有一个好处,即一个的iframe已超过xmlhttprequest是,它可以用来制造文件上传。 由于浏览器的安全性限制,仅用户的行动,如点击一种形式,可以与档案,对用户的机器。 这使得针对一种形式,以一个的iframe的唯一选择文件上传不涉及一个正常的形式后页刷新周期。 但是,没有任何理由,你不能打折,回用的iframe为文件上传和xmlhttprequest为您余下的阿贾克斯请求。 除非你是作远程脚本式的阿贾克斯要求,工作周围的iframe的限制,将增加大量工作要做,任何ajax开发项目。

建立一个隐藏的iframe

为了获得最大的兼容性与旧的浏览器,你可以只添加的iframe你的html和给它一个大小0x0 。 (你不能只是把它隐藏,或者一些浏览器将不会装载它) 。不过,这种做法是不灵活,所以,你们将要创造帧动态。 并非所有老年人的浏览器支持document.createelement ,但浏览器没有这种支持将普遍缺乏其他动态能力需要利用这些数据你加载,所以这是最好的,以向它们提供支助的一个静态的html版本的网页。 在下面的例子中,称iframe是创造了用innerhtml因为它的简单,比创造,它用dom的方法。 然而请注意,它也可以被创造以document.createelement ,就像系,以它的正说:

一日无功rdiv = document.createelement ( '系' ) ;
二rdiv.id = ' remotingdiv ' ;
三无功作风= '边界: 0 ;宽度: 0 ;身高: 0 ; ' ;
四rdiv.innerhtml = " " ;

七document.body.appendchild ( rdiv ) ;

创造一种形式

如果你想使只有get请求,你可以改变的价值,称iframe的钢骨混凝土财产,但这样做后,你需要使用有针对性的形式。 得到的是不是一个很好的解决方案,为阿贾克斯要求有两个原因:它可以发出只有数量有限的数据(金额变化依赖于浏览器) ,即可获得可被缓存和/或预装的,由代理伺服器,不会让您想用它来进行一项行动,例如更新你的数据库。

用一种形式与的iframe是容易的。 刚刚成立的形式,服务对象的属性,当您提交的形式,其结果负荷称iframe 。 下面的例子中创造我们的形式和集其目标,以称iframe我们创造了稍早,在"创造一个隐藏的iframe "的一段文章:

一日rdiv.form = document.createelement ( '表' ) ;
二rdiv.form.setattribute ( '身份证' ,身份证+ ' remotingform ' ) ;
三rdiv.form.setattribute ( '行动' ,网址) ;
四rdiv.form.setattribute ( '目标' ,身份证) ;
五rdiv.form.target =身份证;
六rdiv.form.setattribute ( '法' , '后' ) ;
七rdiv.form.innerhtml = ' 第8号= " ' +身份证+ '数据" > ' ;

发送数据,从装货内容,以原文件

只有这样,才能知道的内容,称iframe已装载的是有内容页来说有些javascript的表示,通知家长页,其中的iframe嵌入。 最简单的方法,这样做的是设置有载事件处理器对文件的,你装。 这一限制手段,你不能用的iframe装载任意内容一样,你就可以使用xmlhttprequest 。 不过,它还是有用的案件中,一台服务器页是已被用来作为阿贾克斯网关。 这里是一个例子,有载:

<体有载= " parent.document.callback (结果) " >

完整的iframe ajax的例子

充分的例子,一个的iframe认为阿贾克斯的要求,包括两件。 第一幅是客户端代码创建的iframe和形式。 第二项是服务器端的代码,编写了一些数据,并把它送到回给母公司文件,在其有载事件处理机制。

第一部分的例子(上市1 )是javascript代码在一个简单的html文件。 此页是用来测试;回调函数只是警报的内容和结果。 第二部分的例子(上市2 )是一个简单的php脚本,其中包括数据后,送它回给母公司的文件。 作一个有用的系统,你可能还要包括一些额外的变数形式,它会告诉php代码有什么事都与上传数据,或者你可以把逻辑直接排入脚本,并使用不同的目标页面为每项任务的,你想要完成的任务。

上市1 。 做出了阿贾克斯请求采用的iframe