有下一个初始条件:
后端:用于文件上传的servlet;
UI :form,提交用于文件上传的servlet:
<iframe id="uploadFrame" name="uploadFrame"></iframe>
<form enctype="multipart/form-data" method="post" target="uploadFrame"
action="<%= request.getContextPath() %>/uploadFile?
portletId=${portletId}&remoteFolder=${remoteFolder}">
...
</form>
点击此表单的提交按钮后,文件上传处于进度, POST请求相应处理(可以在FireBug中跟踪)。
是否可以依赖此POST请求来处理进度图标?
我的意思是,如果正在处理POST,该网页应显示进度.gif图标。
也许,可以使用Prototype lib的 Ajax.PeriodicalUpdater 函数或其他解决方案吗?
无论如何,看起来,没有ajax是不可能的。
感谢任何帮助。
答案 0 :(得分:7)
<强> Parent.htm 强>
<script language="javascript">
function ShowProgress() {
document.getElementById("progress").style.display = "inline";
}
function HideProgress() {
document.getElementById("progress").style.display = "none";
}
</script>
<img src="progress.gif" id="progress" style="display: none"/>
<iframe id="uploadFrame" name="uploadFrame"></iframe>
<form enctype="multipart/form-data" onSubmit="showProgress" method="post" target="uploadFrame" >
...
</form>
SubmitResponse.htm(您上传表单提交的页面)
<script language="javascript">
if (parent.HideProgress) {
parent.HideProgress();
}
</script>
答案 1 :(得分:3)
在之前的项目中,我使用jQuery在加载之后将一个后期绑定加载处理程序附加到iframe ,并在之前发布ajax帖子。
// iframe configured
// call dopost func
function dopost() {
//this dosnt work, its for illustration that you need to wrap the iframe
var iframe = $('iframe');
//setup a callback to remove the gif when postback is done
iframe.load(function(){
//cleanup progress indicator
});
//inject your animated progress gif
//start the submit and wait for callback
form.submit();
}
一旦回发完成,你的回调函数会负责拆除gif。
答案 2 :(得分:1)