iframe无刷新跨域上传文件并获得返回值

需求:从S平台上传文件到R平台,上传成功后R平台返回给S平台一个值,S平台是在一个页面弹出的浮窗里上传文件,所以不能用直接用向R平台submit的方式提交,换用一种类AJAX方式实现,此处用了target的方式,是一种伪AJAX.

文件上传--form.html:

<form name="form_add" method="post" action="b.action"  enctype="multipart/form-data" target="hidden_frame">
<iframe name='hidden_frame' id="hidden_frame" style='display:none'></iframe> 
</form>
<script type="text/javascript">   
function callback(msg){
	if(msg == 0){
		parent.$.nyroModalRemove();
	}
}   
</script>

form提交到的target的hidden_frame,这样看不出来页面跳转,callback为一个回调函数,接受上传action传回的值,根据传回值执行相应的操作。

处理上传文件--handler.action:

 

response.setCharacterEncoding("UTF-8");
		response.setContentType("text/html");
		response.setHeader("Cache-Control", "no-cache");
		response.addHeader("Access-Control-Allow-Origin", "*");
		response.addHeader("Access-Control-Allow-Headers", "x-requested-with");
		response.addHeader("Location", callUrl + "?msg=" + result);
		
		response.sendRedirect(callUrl + "?msg=" + result);

 callUrl为文件上传时提交的反调的callUrl,msg为回传的参数。

 callUrl为S平台的deal_callback.html,和上传的页面在同一目标下,回调页面--deal_callback.html:

 

<script type="text/javascript">
	var rs = window.location.search.split('?').slice(1);
	window.parent.callback(rs.toString().split('=').slice(1));
</script>

 deal_callback.html是response跳转到的页面,里面就两行代码,跳转到deal_callback.html后,此页面调用上传页面的callback方法,将返回值传递过去,完成返回值的传递。

 

Quote: http://blog.leezhong.com/tech/2011/05/06/crossdomain-upload.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值