IFrame和Ajax比较

2023-11-08

         说到比较,可能我是需要把这连个东西都给大家介绍一下的,但是介于大家都已经有了很多的理解。我就简单的说了。

Ajax:
            是指一种创建交互式网页应用的网页开发技术。主要是利用XmlHttpRequest对象。该对象在 Internet Explorer 5 中首次引入,它是一种支持异步请求的技术。简而言之,XmlHttpRequest 使您可以使用 JavaScript 向服务器提出请求并处理响应,而不阻塞用户。


IFrame:
            HTML标签,作用是文档中的文档,或者浮动的框架(FRAME)。

以上的说法是完全摘自百度百科的。但是从他们的描述来说他们好像完全是没有可比性的。但是我们完全可以用IFrame来实现类似Ajax的技术的,这非常的简单,而且在XmlHttpRequest 问世之前我们也确实是这样用的。下面我们通过一个简单的例子来模拟一下IFrame的远程脚本调用,这个示例并没有真正调用服务器,只是想让大家对如何使用IFrame实现远程脚本调用有所认识。


IFrame.html文件:

<span style="font-size:18px;"><html> 
<head> 
	<title>Example of remote scripting in an IFRAME</title> 
</head> 
<script type="text/javascript"> 
	function handleResponse() { 
		alert('this function is called from server.html'); 
	} 
</script> 
<body> 
<h1>Remote Scripting with an IFRAME</h1> 
	<iframe id="beforexhr" 
	name="beforexhr" 
	style="width:0px; height:0px; border: 0px" 
	src="blank.html"></iframe> 
<a href="serverl.html" target="beforexhr">call the server</a> 
</body> 
</html> </span>

server.html文件

<span style="font-size:18px;"><html> 
<head> 
<title>the server</title> 
</head> 
<script type="text/javascript"> 
	window.parent.handleResponse(); 
</script> 
	
<body> 
	<a href="serverl.html" target="beforexhr">call the server</a> 
</body> 
</html> </span>

        运行这个代码,你会看到弹出的提示框:'this function is called from server.html'


        这个例子中我们完全实现了远程的脚本调用,这似乎和ajax在做同样的事情,但两者有什么区别呢。


        1.首先我们想说的也是大家都普遍知道的一点就是ajax最大的特点——异步通信。


         1)用iframe请求服务器的数据时,通常浏览器下面的状态栏中的进度条会像打开某个新的网页时在前进。如果设置了刷新报警音,电脑会发出“咔咔”的响声,这对用户来说可能感觉会比较烦,如果请求频繁,会使用户觉得烦躁。
         2)而用Ajax请求服务器的数据时不会出现上述情况。但实质上如果服务器的返回值大小是一样的,他们的速度上的差别是一样的。

         2.从功能上来说:
         
         1)iframe包含了一个整个网页,通常,在布局网页的时候,我们经常要用到它。这样会使网页的制作显得很自然而且方便管理。

        Ajax通常是在网页中某个小部分需要改变的时候用到的,它在改变网页内容的时候快速而精巧。在需要改变网页上几个字的时候,我们一般不用iframe。 


         2)如果你想用不刷新的技术上传一个数据,那么无疑你一定要选择iframe。这是很多人通常用到的方法,这一点iframe一定是灵活而简单的。        
         用Ajax,通常你要写一堆声明的代码,总之会比较麻烦。但是,如果需要服务器进行复杂运算,而返回值是一个很简单结果,用Ajax一定是个不错的选择。

          3.两者各自存在的问题:
          到现在ajax碰到的两个比较大的问题是
         1)中文乱码,这个貌似是编码的问题,基本上能够解决,但是在某些比较低版本的浏览器中还是会出现一些问题


         2)跨域post提交数据,这个貌似没有办法直接实现,只能通过代理或其他方式来实现

           而这两个问题iframe基本都不会碰到,但是iframe的问题在于
           1)你想同时进行多少个请求,就必须建立多少个iframe~否则无法同时进行。


           2)iframe的方式处理的是iframe页面的内容,交互成功的触发方式主要靠。
            a)页面定时读取页面加载状态:这种方式方式必然导致对客户端资源的较多占用。              
            b)iframe触发父页面的事件:
这种方式导致返回数据的增加,而且必须保证父页和框架页的变量和方法的统一。(我们上面的例子就是使用的这种方式)而这点上面,ajax交互过程中仅仅返回所需要的数据(xml或者text),这个是ajax相比iframe的最大优势之一。

        以上是我粗略的比较了一下两者的不同,更深入的理解还需要大家在以后的项目中多多的实践。





本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IFrame和Ajax比较 的相关文章

  • 在学习 Ajax 之前我应该​​先学习 Xml 和 Javascript 吗?

    A 由于 Ajax 是基于 Javascript 和 Xml 的 我应该在学习 Ajax 之前学习 Xml 和 Javascript 吗 B 即使了解 Javascript 和 Xml 不是必须的 如果我了解 Javascript 和 Xm
  • 可以通过 url 发送 JSON 吗?

    我有一个 ruby 哈希 其中键是 url 值是整数 我将哈希值转换为 JSON 我想知道是否能够通过 AJAX 请求在 url 内发送 JSON 然后从 params 哈希值中提取该 JSON 另外 我将把 JSON 化的 ruby 哈希
  • Ajax调用完成后执行函数

    我是 Ajax 新手 我尝试在使用 for 循环时使用 Ajax Ajax 调用之后 我正在运行一个使用 Ajax 调用中创建的变量的函数 该函数只执行两次 我认为 Ajax 调用可能没有足够的时间在循环开始之前进行调用 有没有办法在运行
  • 使用来自Processing-JS的JSON

    我想使用编写一个应用程序处理 JS http processingjs org 并且我希望能够使用服务器端数据加载它 我还没有编写服务器端 所以我可以使用任何东西 但似乎明显的 AJAX 事情是使用 JSON 将数据上传到页面中 如何从我的
  • Facebook“赞”按钮回调帮助

    我正在使用此代码进行类似 facebook 的回调 问题是 如果我调用 php 脚本 例如 有人可以看到我的 javascript 并运行此页面 甚至可以向其发送垃圾邮件或在没有先点赞的情况下使用它 我的想法是 我想为每个喜欢该页面的用户提
  • Rails:通过 Ajax 传递参数

    我需要通过 javascript 将参数传递回服务器 目前 我将它们传递给 JavaScript 如下所示 sendParams 然后像这样将它们发回 function sendParams q ajax url mymodel myact
  • Chromium 上的 HEAD XMLHttpRequest

    我尝试使用 Chromium 中的 XMLHttpRequest 获取 HEAD 响应以检索压缩 url 的位置 URL 但失败 var ajax new XMLHttpRequest ajax onreadystatechange fun
  • Async/Await - 如何在递归 Ajax 函数中实现 Javascript Async-Await?

    我有两个功能 I call trendyolStocksUpdate 内部有循环的函数多次syncTrendyolOFFStocks 功能 I used async await but trendyolStocksUpdate 函数不是按顺
  • A:Visited 未检测到 AJAX 链接

    我注意到a visited样式不适用于通过 JavaScript 请求的链接 但是 在标准用户单击时 会立即和随后的刷新时注册访问的完全相同的链接 我不确定这是否是独一无二的jQuery 移动 http forum jquery com t
  • 在 JSP 中从 JavaScript/jQuery 调用后端 Java 方法

    我有一个 JSP 其中有一个select包含实体种类名称的列表 当我选择一个实体类型时 我需要填充另一个实体类型select包含所选实体类型的字段名称的列表 为此 我调用了一个 JavaScript 函数onchange event 在 J
  • JavaScript 等待函数响应

    我有以下代码 myFunc bar myFunc 正在发出 ajax 请求 在 myFunc 的请求完成之前 我不想执行 bar 我也不想将对 bar 的调用移至 myFunc 内部 可能的 EDIT 这是我最终得到的代码 var FOO
  • 为什么 Ajax 在第一个请求时可以正常工作,但在第二个请求时会在新页面上返回部分视图?

    我有一个嵌套在表中每一行中的 Ajax 表单 以提供添加 删除功能 该部分列出了所有可用的角色 Microsoft Identity 2 0 以及每个角色的指定用户是否与该角色关联 以及用于切换用户进出角色的按钮 Ajax 当我使用 Aja
  • 在 JSF 自定义验证器中区分 ajax 请求和完整请求

    我的验证器需要知道它是完整请求还是 ajax 请求 在我当前的解决方案中 我检查 http 请求标头X Requested With元素 public void validate FacesContext context UICompone
  • Internet Explorer 不渲染从 JQuery ajax 帖子返回的 html

    我有一个带有输入框的页面 其 onkeyup 根据输入的内容 搜索字段 触发 JQuery ajax 帖子 ajax 调用回发的 html 应该填充页面上的另一个 div 这是 jquery ajax 帖子 var o me results
  • 如果 JSF 页面受 j_security_check 保护,则 ajax 请求不会引发 ViewExpiredException

    我有一个不受保护的 JSF 页面j security check 我执行以下步骤 在浏览器中打开 JSF 页面 重新启动服务器 单击 JSF 页面上的命令按钮以发起 ajax 调用 Firebug 表明ViewExpiredExceptio
  • 如何使用 file:///F:/foldername 访问 ajax 中的本地文件夹?但它适用于 http://

    在这里 我使用以下代码使用 AJAX jQuery 动态创建文件名列表 window load function var fileExt csv document ready function ajax url file F foldern
  • 如何从 GridView TemplateColumn 单击触发 UpdatePanel?

    我有以下情况 我的所有控件都在页面上的更新面板上 这些控件之一是 GridView 该 GridView 在标题模板字段上包含一个复选框 以进行全部选中 autopostback 是 true 但是当检查更改时 没有任何更改 更新面板会触发
  • UpdatePanel 破坏 JQuery 脚本

    这是我想做的事情的简化版本 基本上我有一个数据列表 里面有很多东西 当你将鼠标悬停在数据列表中的项目上时 我希望 jquery 隐藏 显示东西 问题是 在我进行数据绑定后 如果 gridview repeater datalist 位于更新
  • 返回视图作为 JSON 对象的一部分

    我有一个应用程序只加载一次完整视图 我这样做的原因并不重要 重要的是 其余内容只会以部分视图的形式返回 除了一些内容之外 我还有一些 JSON 对象 我想通过每个 AJAX 请求在服务器之间来回传递 有没有办法返回一个 JSON 对象 并将
  • 当php脚本通过ajax运行时显示进度条

    我有一个通过 ajax 向服务器提交值的表单

随机推荐

  • TLS协议分析

    TLS协议分析 2015 09 06 本文目标 学习鉴赏TLS协议的设计 透彻理解原理和重点细节 跟进一下密码学应用领域的历史和进展 整理现代加密通信协议设计的一般思路 本文有门槛 读者需要对现代密码学有清晰而系统的理解 建议花精力补足背景
  • [github项目]基于百度地图二次开发实现的车辆监管(包含车辆定位、车辆图片和方向控制,电子围栏,图形绘制等功能)前端实现(不包含后端实现)...

    前言 基于百度地图javascript版本开发 百度地图中所用的key已承诺仅用于测试 不用于商业用途 注 本文所有代码可以到github上进行下载 github地址 http map eguid cc 已经封装好的功能 基于百度地图二次开
  • Matlab Babble噪声

    问题 我们在做语音相关实验的时候可能需要用到Babble噪声 解决 可以从该链接下载babble噪声 截取我们所需要的长度 设置信噪比 进行加噪 上代码 load babble mat 导入babble文件 voicepath M5 wav
  • 随机生成几位字母加数字的混合字符串

    日常开发中 我们可能需要一些随机字符串做测试 可能是4位 也可能是8位 如下是一个随机生成8位字符串的工具类 可根据需要 改成自己的需要的 import java util Random public class RandomGenerat
  • mysql 设置 utc_关于时间:MySQL应该将其时区设置为UTC吗?

    跟随问题HTTPS serverfault com questions 191331 should servers have their timezone set to GMT UTC 应将神秘的时间带设置到UTC 还是应设置为服务器或PH
  • 期货开户不要孤注一掷

    一 在没有稳定盈利之前 特别是新手 尽可能少入金 建议不要超过1万 每次只做一手 因为新手没有不亏的 投的多 就意味着亏的多 持续稳定盈利再多投入 才是上策 许多新手一两周就亏几万几十万的 等明白期货的凶险 已经晚了 下单后 连续三天很纠结
  • [已解决] wget命令出现Unable to establish SSL connection.错误

    文章目录 解决 从linux上下载mysql 包时 wget https downloads mysql com archives get p 23 file mysql 5 6 46 linux glibc2 12 x86 64 tar
  • qt 中 file generation failure: unable to create the directory

    原因 不能将qt的项目工程安装到qt软件的安装目录中 如 opt 的目录中 解决 应该使用当前系统的普通用户的目录中建立项目目录 如 home chenfan QT myprojects
  • 数据分析概述和理论基础

    2018 03 26 Python开发者交流平台 什么是数据分析 数据分析 是指用适当的统计分析方法对收集来的大量数据进行分析 提取有用信息和形成结论 而对数据加以详细研究和概括总结的过程 为什么会有数据分析 随着计算机技术 互联网技术 数
  • Linux---用户的权限

    专栏 Linux 个人主页 HaiFan 本章为大家带来用户的权限的讲解 用户的权限 Linux权限的概念 权限的三类对象 权限的三种类型 权限设置chmod chown chgrp 更改权限chmod chown chgrp umask
  • Atcoder Beginner Contest 164 D

    题意 给定一个只包含数字字符且不包含 0 0 0字符的字符串 S S S 问有子串组成的十位数是 2019 2019
  • QListView的使用

    一 介绍 QListView可以用来以列表的形式展示数据 在Qt中使用model View结构来管理数据与视图的关系 model负责数据的存取 数据的交互则通过delegate来实现 二 model QT提供了一些现成的models用于处理
  • drools规则引擎初探

    1 drools是什么 Drools是为Java量身定制的基于Charles Forgy的RETE算法的规则引擎的实现 具有了OO接口的RETE 使得商业规则有了更自然的表达 Rule是什么呢 一条规则是对商业知识的编码 一条规则有 att
  • Java中Set的使用

    在Java中使用Set 可以方便地将需要的类型以集合类型保存在一个变量中 主要应用在显示列表 Set是一个不包含重复元素的 collection 更确切地讲 set 不包含满足 e1 equals e2 的元素对 e1 和 e2 并且最多包
  • 如何修改桌面的存放路径?(将桌面放到D盘或E盘)

    方法1 使用超级兔子 依次选择 魔法设置 系统 系统文件夹 桌面 就可以自定义桌面项的路径了 方法2 首先要在 开始 运行 内输入 regedit 打开注册表编辑器 然后要在 文件 下拉菜单中 的 导出 功能备份好注册表 以防万一 接着在左
  • 学习笔记——Java入门第二季

    1 1 介绍类与对象 类和对象的关系 时间万物皆对象 对象是具体的事物 是类的具体事例 类是抽象的概念 是对象的模板 new关键字是创建实例对象最重要的标志 Dog duoduo new Dog Dog lucky new Dog 这样就创
  • RabbitMQ--扩展--11--均衡负载

    RabbitMQ 扩展 11 均衡负载 1 场景 面对大量业务访问 高并发请求 可以使用高性能的服务器来提升RabbitMQ服务的负载能力 当单机容量达到极限时 可以采取集群的策略来对负载能力做进一步的提升 但这里还存在一个负载不均衡的问题
  • consul作为配置中心

    Conusl可以作为注册中心 也可以作为配置中心 作为配置中心 使用起来也很方便 大多数都是配置 Consul的安装这里不说了 主要是说明java后端怎么使用 所以本次采用windows版本的consul 引入和配置 2个文件 pom配置
  • ajax error弹框,完美解决:layui弹出层无法关闭/ajax请求成功,但是不进入success,也不进入error...

    我在使用一个叫做H ui admin的后台模板 基于layui 做一套管理系统 业务 点击按钮 出现弹出层 ajax通过接口向后台发送数据 成功后 关闭弹出层 前面都没有什么问题 就是到了关闭弹出层 真的快把我逼疯了 1 首先 我认为是la
  • IFrame和Ajax比较

    说到比较 可能我是需要把这连个东西都给大家介绍一下的 但是介于大家都已经有了很多的理解 我就简单的说了 Ajax 是指一种创建交互式网页应用的网页开发技术 主要是利用XmlHttpRequest对象 该对象在 Internet Explor