gpt4 book ai didi

javascript - 如何拦截 Javascript 函数中的网络服务器响应

转载 作者:行者123 更新时间:2023-11-28 03:26:56 37 4
gpt4 key购买 nike

这是我的困境。在我的 JSP 中,我试图上传一个文件,该文件又转到 JS 函数。在我的 JS 函数中,正在创建动态 iframe,并具有 onload 函数。onload 函数创建一个动态表单元素并继续提交它。

底层网络服务器是 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
}

最佳答案

当您提交表单时,浏览器会在 iframe 中发出新的顶级请求,该请求由浏览器本身处理,因此您无法访问 HTTP 返回代码。您可以做的是监听 iframe 上的加载事件,或者(不确定它是否在您的控制之下)修改 IIS 响应以返回将结果传达给包含页面的脚本。

请注意,这在某种程度上难以实现,并且可能难以移植到 different browsers ,取决于支持的平台和 involved domains .

您可以异步提交表单 via javascript完全控制 HTTP response .

关于javascript - 如何拦截 Javascript 函数中的网络服务器响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20655911/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com