Как получить ответ из браузера при запуске загрузки файла? - PullRequest
0 голосов
/ 03 июня 2019

Я хочу получить ответ, когда начнется загрузка, я отправляю форму, которая является HTML-формой, и я получаю файл в качестве возврата, который уже Flush в контроллере.поэтому нет ответа со стороны сервера.Есть ли способ получить ответ от браузера, чтобы узнать, началась загрузка или нет?

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

в этом коде сработала кнопка отправки.Я хочу проверить ответ браузера в этой функции

Ответы [ 2 ]

1 голос
/ 03 июня 2019

Невозможно контролировать состояние загрузки только из Javascript, если вы запускаете обычную загрузку. Расширение может использовать API загрузок ( Chrome / FF ), чтобы запросить ход загрузки, и страница может сделать то же самое, используя XMLHttpRequest и событие onProgress * 1006. *, но в настоящее время ни один крупный браузер не может запрашивать ход загрузки с использованием только Javascript.

Если вы можете перенести загрузку в серверный скрипт, вы можете, однако, отслеживать загрузку, используя уникальный токен .

0 голосов
/ 04 июня 2019

вот моя попытка, и она работает нормально. в контроллере я добавил 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 отсутствует, он вернет значение -1. Затем мы удалим куки и остановим таймер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...