iframe提交使父表单的请求参数为空
我在 jsp 中使用隐藏的 iframe 来上传图像文件。代码如下:
<form name="frm" method="POST" action="./servlet/newSubmit1">
<div>
Image:
<input type="file" id="uploadImage" name="uploadImage" size="30" onchange="uploadFiles(); fileUpload(this.form,'./servlet/TempImageUploader','upload123')"/>
<input type="hidden" id="UserName" value="TestValue"/>
</div>
<div id="upload123"></div>
<ul>
<li>
<input type="button" value="Upload" tabindex="6" onclick="uploadAttachedPhotos()"/>
</li>
</ul>
</form>
正如您在代码中看到的,调用了浏览按钮“uploadFiles()”和“fileUpload”函数的onchange事件。 uploadFiles函数使用DWR将文件上传到服务器上的临时目录并在jsp页面上预览,fileUplaod函数创建一个隐藏的iframe来调用维护地图中所有上传图像的 servlet。页面上还有一些其他数据可以由用户更新。例如,这里我有“用户名”字段,其中可以包含文件名。
创建隐藏 iframe 的 javascript 函数是:
function fileUpload(form, action_url, div_id) {
// Create the iframe...
var iframe = document.createElement("iframe");
iframe.setAttribute("id", "upload_iframe");
iframe.setAttribute("name", "upload_iframe");
iframe.setAttribute("width", "0");
iframe.setAttribute("height", "0");
iframe.setAttribute("border", "0");
iframe.setAttribute("style", "width: 0; height: 0; border: none;");
// Add to document...
form.parentNode.appendChild(iframe);
window.frames['upload_iframe'].name = "upload_iframe";
iframeId = document.getElementById("upload_iframe");
// Add event...
var eventHandler = function () {
if (iframeId.detachEvent) iframeId.detachEvent("onload", eventHandler);
else iframeId.removeEventListener("load", eventHandler, false);
// Message from server...
if (iframeId.contentDocument) {
content = iframeId.contentDocument.body.innerHTML;
} else if (iframeId.contentWindow) {
content = iframeId.contentWindow.document.body.innerHTML;
} else if (iframeId.document) {
content = iframeId.document.body.innerHTML;
}
document.getElementById(div_id).innerHTML = content;
// Del the iframe...
setTimeout('iframeId.parentNode.removeChild(iframeId)', 250);
}
if (iframeId.addEventListener) iframeId.addEventListener("load", eventHandler, true);
if (iframeId.attachEvent) iframeId.attachEvent("onload", eventHandler);
// Set properties of form...
form.setAttribute("target", "upload_iframe");
form.setAttribute("action", action_url);
form.setAttribute("method", "post");
form.setAttribute("enctype", "multipart/form-data");
form.setAttribute("encoding", "multipart/form-data");
// Submit the form...
document.forms[0].action = action_url;
document.forms[0].submit();
document.getElementById(div_id).innerHTML = "Uploading...";
}
现在的问题是,当我按下上传按钮时,为什么我在父表单的操作 servlet 上得到 request.getParameter("UserName")
NULL ?
谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论