Chinaunix首页 | 论坛 | 博客
  • 博客访问: 55536
  • 博文数量: 20
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 282
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-20 17:23
个人简介

我的博客园;http://www.cnblogs.com/geekpaul/

文章分类

全部博文(20)

文章存档

2015年(7)

2014年(13)

我的朋友

分类: HTML5

2015-01-05 16:06:31

有时候我们在使用iframe时,常这么写:

点击(此处)折叠或打开

  1. <iframe src="*******.do?param=****" id="leftFrame" name="leftFrame" frameborder="0">
  2. </iframe>

或者是使用js加载src

点击(此处)折叠或打开

  1. var params = "?pk_id="+pk_id;
  2. var frameLeftSrc = "<%=path %>/****/****.do"+params;
  3. $('#leftFrame').attr("src",frameLeftSrc);

上面两种写法,都可以实现iframe的加载,我们可能会以为没问题,很正确。其实上面的写法的确是没有太大的问题,对于参数的值不长的时候,注意是参数的值的长度,不是参数的多少。比如说,我要向这个iframe中传递个参数,参数名叫pk_id,值是由主页面或者其他页面返回的一长串的主键拼接起来的值,起码3000个字符以上,这个时候我们再用这个方法访问就有问题了。因为这种url方法是通过get进行提交的,参数的长度是有限制的。

那么对于这种大数据传输的时候怎么办呢,我目前想到的就有两种(大家有什么更好的提议尽管提,相互交流,相互提高):
1.
仍旧用这个种方式传递,但是参数的值不要过长,前提是不长的参数值可以通过关联查询到你想要的长的参数值,这样iframe接收到这个不长的参数值之后,你再想办法获得在iframe子页面中获得你想要的长的参数值。(可以用,但不建议,因为需要个前提)

   2.在主页面采用以下方法,进行加载iframe页面即可:
主页面:

点击(此处)折叠或打开

  1. <iframe src="about:blank" id="leftFrame" name="leftFrame" frameborder="0">
js

点击(此处)折叠或打开

  1.     var url="<%=path %>/pubitem/toChoosePubItemLeft.do"; //定义iframe页面的form表单的action

  2.    //定义form表单
  3.     var html1='
    +url+'">'+
  4.     '+pk_id+'"/>'+ //pk_id是一个长度超过3000字符的值
  5.     '';
  6.     document.getElementById('leftFrame').contentWindow.document.write(html1); //将表单写入iframe中
  7.     document.getElementById('leftFrame').contentWindow.document.getElementById('queryForm').submit();
将以上方法封装到一个方法里面,然后主页面加载的时候调用这个方法,就会将主页面的大数据传递给iframe页面了。

阅读(3640) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~