Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Javascript函数中截获Web服务器响应_Javascript_Html_Jsp_Iis_Iframe - Fatal编程技术网

如何在Javascript函数中截获Web服务器响应

如何在Javascript函数中截获Web服务器响应,javascript,html,jsp,iis,iframe,Javascript,Html,Jsp,Iis,Iframe,这是我的困境。 在我的JSP中,我试图上传一个文件,该文件依次进入JS函数。 在my JS函数中,正在创建一个动态iframe,并具有一个onload函数。 onload函数创建一个动态表单元素并继续提交它 底层web服务器是IIS,如果文件大小很大,它会抛出HTTP错误404.13,我会得到一个HTML响应。我想处理这个问题,不愿意解析HTML来查找错误代码。请建议我应该如何进行 我的代码如下所示: JSP内容 <td> <input type="image" id="upl

这是我的困境。 在我的JSP中,我试图上传一个文件,该文件依次进入JS函数。 在my 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>
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
}

var uploadfile=document.getElementById('uploadfile');
上传({
元素:上传文件,
操作:“upload.jsp”,
onstart:函数(文件名){
document.getElementById(“上传的文件”).innerHTML=“上传”;
},
oncomplete:功能(响应数据){
……有些逻辑
}
});
JS内容

<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>
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
}
功能上传(d){
变量g={
元素:null,
动作:“关于:空白”,
动作参数:{},
最大大小:0,
onstart:null,
oncomplete:null,
dataname:“文件数据”,
目标:空,
zindex:“自动”
};
……有些逻辑
var c=document.createElement(“div”);
……有些逻辑
c、 innerHTML='';
……有些逻辑
var i=c.childNodes[0];
i、 onload_callback=函数(){
……有些逻辑
var a=document.createElement(“表单”);
……有些逻辑
a、 提交();
}
……有些逻辑
}

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

请注意,这在某种程度上很难实现,也可能很难移植到,具体取决于支持的平台和


您可以异步提交表单,以完全控制响应。

n不,不能这样处理响应。我将尝试与框架工作,然后。感谢您提供的线索。实际上,使用XHR查询服务比使用IFRAME更简单、更干净。我开始分析响应,但IIS向我返回了一个响应代码200和一个错误HTML。也许我在这里遗漏了什么。增加IIS上允许的内容大小并在服务器端实现流式处理对我有帮助。