Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.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 下载文件时如何从浏览器获得响应?_Javascript_Jquery_Browser_Download - Fatal编程技术网

Javascript 下载文件时如何从浏览器获得响应?

Javascript 下载文件时如何从浏览器获得响应?,javascript,jquery,browser,download,Javascript,Jquery,Browser,Download,我想在下载开始时得到一个响应,我正在提交一个表单,它是一个HTML表单帖子,我得到一个文件作为返回,它已经在控制器中刷新了。因此,服务器端没有响应。是否有任何方法可以从浏览器端获得响应,从而知道下载是否已开始 function GenerateReport() { debugger; ChangeButtonPatchView("Report", "buttonPatch", "DisabledGenerateRpt"); $('#Action').val('Report

我想在下载开始时得到一个响应,我正在提交一个表单,它是一个HTML表单帖子,我得到一个文件作为返回,它已经在控制器中刷新了。因此,服务器端没有响应。是否有任何方法可以从浏览器端获得响应,从而知道下载是否已开始

function GenerateReport() {
    debugger;
    ChangeButtonPatchView("Report", "buttonPatch", "DisabledGenerateRpt");
    $('#Action').val('Report');
    $('#btnPrintOrSaveReport').trigger('click');
    setInterval(function () {
        ChangeButtonPatchView("Report", "buttonPatch", "SCurvePercentageComplete");      
    },2000);  
}

在此代码中,将触发“提交”按钮。我想检查此函数中的浏览器响应

如果触发定期下载,则无法仅从Javascript监控下载状态。扩展可以使用downloads API(/)查询下载进度,页面也可以使用API查询下载进度,但目前没有一个主要浏览器能够单独使用Javascript查询下载进度


但是,如果您可以将下载卸载到服务器端脚本,您也可以这样做。

这是我的尝试,效果很好。 在控制器中,我添加了一个cookie

HttpCookie dwnloadResponse = new HttpCookie("dwnloadResponse");
                dwnloadResponse["Complete"] = "true";
                Response.Cookies.Add(dwnloadResponse);
我使用这个cookie名称签入javascript

 function GenerateReport() {
    debugger;
    ChangeButtonPatchView("Report", "buttonPatch", "DisabledGenerateRpt");
    $('#Action').val('Report');
    $('#btnPrintOrSaveReport').trigger('click');
    _responseCheckTimer = setInterval(function () {
        debugger;
        if (document.cookie.indexOf('dwnloadResponse') !== -1) {
            ChangeButtonPatchView("Report", "buttonPatch", "SCurvePercentageComplete");
            var d = new Date();
            d.setTime(d.getTime() + 0);
            var expires = "expires=" + d.toUTCString();
            document.cookie = "dwnloadResponse=" + ";" + expires + ";path=/";
            clearTimeout(_responseCheckTimer);
        }      
    },1000);          
}

这将检查浏览器中是否有可用的cookie。如果cookie不存在,它将返回-1值。然后我们将删除cookie并停止计时器。

ohh这就是我已经检查过的问题。我只需要一个下载已启动的响应。@DhanilDinesan遗憾的是,据我所知,没有浏览器会发出下载已启动的事件。最简单的解决方案是使用服务器端下载主机,该主机可以跟踪单个下载并将状态发送回客户端。