这是我的困境。 在我的JSP中,我正在尝试上传一个文件,该文件又转换为JS函数。 在我的JS函数中,正在创建动态iframe,并具有onload函数。 onload函数创建一个动态表单元素,然后继续提交它。
底层Web服务器是IIS,如果文件大小很大,它会抛出HTTP错误404.13并得到HTML响应。我想处理这个问题,并且不愿意解析HTML以查找错误代码。请建议我该如何进行。
我的代码看起来像这样:
JSP内容
<td>
<input type="image" id="uploadfile" src="../images/abc.gif" alt="Upload file" title="Upload File" />
<script type="text/javascript">
var uploadfile = document.getElementById('uploadfile');
upload({
element : uploadfile,
action : 'upload.jsp',
onstart : function(filename) {
document.getElementById("uploaded_file").innerHTML = "Uploading";
},
oncomplete : function(response_data) {
.......//some logic
}
});
</script>
</td>
JS内容
function upload(d) {
var g = {
element : null,
action : "about:blank",
action_params : {},
maxsize : 0,
onstart : null,
oncomplete : null,
dataname : "Filedata",
target : null,
zindex : "auto"
};
.......//some logic
var c = document.createElement("div");
.......//some logic
c.innerHTML = '<iframe name="frameName" src="about:blank" onload="this.onload_callback()"></iframe>';
.......//some logic
var i = c.childNodes[0];
i.onload_callback = function() {
.......//some logic
var a = document.createElement("form");
.......//some logic
a.submit();
}
.......//some logic
}
答案 0 :(得分:0)
当您提交表单时,浏览器会在iframe中发出新的顶级请求,并且该请求由浏览器本身处理,因此您无法访问HTTP返回代码。您可以做的是在iframe上监听加载事件,或者(不确定它在您的控制之下)修改IIS响应以返回将结果传递给包含页面的脚本。
请注意,这将以某种方式难以实现,并且可能难以移植到different browsers,具体取决于支持的平台和involved domains。
您可以异步提交表单via javascript,以完全控制HTTP response。