我有一个按钮,当点击时会打开一个叠加层,它是iframe中的一个表单。有一个文件上传,我成功地使叠加层消失,并在提交时将父窗口重定向到另一个页面。问题出在这里:
如果用户上传了一个巨大的文件,则必须先将文件上传,然后才能重定向用户。是否有其他方式上传文件,同时关闭叠加层并重定向父窗口而不丢失文件上传?
亲切的问候,
答案 0 :(得分:1)
对我来说,解决方案非常简单。不要使用iframe进行文件上传。只需将带有文件上载对话框的表单放入主页面即可。如果上载完成,则服务器可以将重定向发送回客户端,然后将用户重定向到新站点。 或者这种简单的解决方案有什么问题吗?
<强>更新强>
因为简单的解决方案无效,我建议另一种解决方案。向iframe添加onload事件侦听器。如果调用onload事件的事件处理程序(这意味着文件上载完成),则重定向用户。要重定向用户,您可以使用window.location.href = "your new url";
但请注意,在iframe的文件格式完全加载后添加事件侦听器,或者您必须忽略第一个触发的事件(这将是加载的文件格式)你是事件处理程序。
答案 1 :(得分:0)
试试吧......
在父窗口的step1之前,您需要编写一个ajax函数来检查会话。 js ajax函数在加载叠加(iframe)后不断联系服务器 当服务器返回true时,您可以隐藏叠加层,然后将页面重定向到其他位置。
答案 2 :(得分:0)
为此,我使用Valum的插件或jQuery form plugin。
如果您坚持使用iframe文件上传,请参阅Valum's AJAX file upload的旧版本。要么使用他的包,要么看代码的灵感。不要被这个名字弄糊涂;它不使用AJAX,而是使用iframe进行文件上传。
请注意,newer version of Valum's plugin也可能使用AJAX。