LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

你的无刷新技术是用的Ajax还是iframe?

admin
2011年1月22日 21:37 本文热度 2808
15.38% (2)
23.08% (3)
61.54% (8)
您所在的用户组没有投票权限
本帖最后由 我为ぁ琴狂 于 2010-8-22 11:44 编辑

现在我碰到一些问题很纠结:
1,全都用Ajax,文件上传可以用flash上传,但是Ajax提交表单总感觉挺麻烦的
2,全都用iframe,似乎不能符合W3C文档标准(不知道怎样去符合)
3,一般用Ajax,文件上传用iframe,这个discuz就是这样做的

iframe替代ajax方案:
1.html
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
  5. <title>无标题文档</title>
  6. <script type="text/javascript">
  7. function ajax(settings) {
  8.     var div = document.createElement("div"), successed = false, iframeId = "i" + new Date().getTime();
  9.         div.style.display = 'none';
  10.     div.innerHTML = '<iframe id="' + iframeId + '" name="' + iframeId + '"></iframe>';   
  11.         document.body.appendChild(div);
  12.         
  13.         var hiddenIframe = document.getElementById(iframeId);

  14.         if(settings.form) {
  15.             settings.form.action = settings.url;
  16.             settings.form.target = iframeId;
  17.             settings.form.submit();
  18.         } else {
  19.             hiddenIframe.src = settings.url;
  20.         }
  21.         
  22.         var fetchData = function() {
  23.             var doc = document.all ? window.frames[iframeId].document : hiddenIframe.contentDocument;
  24.             settings.callback(doc.body.innerHTML);
  25.                 successed = true;
  26.         }
  27.    
  28.         settings.loader();

  29.     setTimeout(function() {
  30.         if(!successed) {
  31.             alert('Resquest timeout!');
  32.             fetchData = new Function();
  33.         }
  34.     }, settings.timeout);

  35.         if (document.all){
  36.                 hiddenIframe.attachEvent("onload", fetchData);
  37.         } else {
  38.                 hiddenIframe.onload = fetchData;
  39.         }
  40. }

  41. function A() {
  42.         ajax({
  43.             form: document.getElementById('f'),
  44.                 url: '1.php',
  45.                 loader: function() {},
  46.                 timeout: 3000,
  47.                 callback: function(data) {
  48.                         alert(data);
  49.                 }
  50.         })
  51.         return false;
  52. }
  53. function B() {
  54.         ajax({
  55.                 url: '1.php',
  56.                 loader: function() {},
  57.                 timeout: 3000,
  58.                 callback: function(data) {
  59.                         alert(data);
  60.                 }
  61.         })
  62.         return false;
  63. }
  64. </script>
  65. </head>
  66. <body>
  67. <form id="f" method="post" onsubmit="return A()">
  68. <input type="text" name="word" value="123" />
  69. <input type="submit"/>
  70. </form>
  71. <button onclick="B()">get_send</button>
  72. </body>
  73. </html>
复制代码
1.php
  1. <?php
  2. echo json_encode(array($_POST))
  3. ?>
复制代码

该文章在 2011/1/22 21:37:11 编辑过

全部评论3

admin
2011年1月22日 21:37
搜到的一些高手的见解 到现在ajax碰到的两个比较大的问题是 1)中文乱码,这个貌似是编码的问题,基本上能够解决,但是在某些比较低版本的浏览器中还是会出现一些问题 2)跨域post提交数据,这个貌似没有办法直接实现,只能通过代理或其他方式来实现 而这两个问题iframe基本都不会碰到,但是iframe的问题在于 1)你想同时进行多少个请求,就必须建立多少个iframe~否则无法同时进行 2)iframe的方式处理的是iframe页面的内容,交互成功的触发方式主要靠a)页面定时读取页面加载状态;b)iframe触发父页面的事件。a)方式必然导致对客户端资源的较多占用,b)方式导致返回数据的增加,而且必须保证父页和框架页的变量和方法的统一。而这点上面,ajax交互过程中仅仅返回所需要的数据(xml或者text),这个是ajax相比iframe的最大优势之一。 当然,有些简单的交互过程,或许用iframe解决会简单一些,例如我的站点有多个频道,采用二级域名布局,这时候如果在a域名下要将数据post到b域名下,如果用ajax处理起来可能会很麻烦,但是iframe很简单就能实现了 至于实际应用中,用iframe还是ajax,看实际需求和个人喜好吧~~ 在有的地方比如点击出现一个浮动操作窗口,用iframe比用ajax方便的多。个人感觉用户体验比ajax还要好,ajax总有顿一下的感觉,iframe的方式响应非常快。但是一点击浏览器的后退按钮就露马脚了,用iframe会把每次操作当作一次点击链接记录到历史记录中。ajax还能做很多其它iframe做不了的事

该评论在 2011/1/22 21:37:46 编辑过
admin
2011年1月22日 21:39
哥用ajax用的很少,几乎不怎么用,适当用用还是有益的,用多了就有些过度依赖了

该评论在 2011/1/22 21:39:04 编辑过
admin
2011年1月22日 21:39
什么方便就用什么

该评论在 2011/1/22 21:39:21 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved