8

私はjqueryファイルのダウンロードを使用しています..

コードは次のとおりです。

 function downloadFile(){
var downloadOptions = {
preparingMessageHtml: "We are preparing your report, please wait...",
failMessageHtml: "No reports generated. No Survey data is available."
                  };

     $.fileDownload("displaySurveyReport.action",downloadOptions);
return false; 
}

これは私がボタンクリックでやっていることです

ボタンをクリックすると、preparingMessageHtml:「レポートを準備しています。お待ちください...」というダイアログボックスが表示されます...問題は、ファイルの準備が完了した後、このダイアログボックスが消えないことです。手動で閉じる必要があります...ファイルの準備が完了し、ダウンロードの準備ができたら、どうすればオフにできますか。

ありがとう

4

5 に答える 5

22

JQueryにファイルのダウンロードが発生したことを認識させるには、応答ヘッダーにが含まれている必要がありますSet-Cookie: fileDownload=true; path=/

Javaの場合:

response.setHeader("Set-Cookie", "fileDownload=true; path=/");
于 2012-12-14T14:05:17.653 に答える
3

これがjqueryファイルのダウンロードのソースコードです。

$(function () {
    $(document).on("click", "a.fileDownloadCustomRichExperience", function () {

        var $preparingFileModal = $("#preparing-file-modal");

        $preparingFileModal.dialog({ modal: true });

        $.fileDownload($(this).attr('href'), {
            successCallback: function (url) {

                $preparingFileModal.dialog('close');
            },
            failCallback: function (responseHtml, url) {

                $preparingFileModal.dialog('close');
                $("#error-modal").dialog({ modal: true });
            }
        });
        return false; //this is critical to stop the click event which will trigger a normal file download!
    });
});

<div id="preparing-file-modal" title="Preparing report..." style="display: none;">
    We are preparing your report, please wait...

    <div class="ui-progressbar-value ui-corner-left ui-corner-right" style="width: 100%; height:22px; margin-top: 20px;"></div>
</div>

<div id="error-modal" title="Error" style="display: none;">
    There was a problem generating your report, please try again.
</div>
于 2012-12-13T05:10:17.213 に答える
1

成功した場合;

response.setHeader("Set-Cookie", "fileDownload=true; path=/");
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");

エラー時

response.setHeader("Set-Cookie", "fileDownload=false; path=/");
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");

「Cache-Control」は、別のリクエストが存在する場合にのみ使用してください。

于 2016-02-17T14:01:30.737 に答える
0

一部のブラウザでは、応答をリセットする必要があります。そうしないと、ダウンロードが機能しません。

response.reset();
于 2016-03-09T04:35:02.977 に答える
0

このようにしてみてください

function exportToExcelTest() {
        var region = $('#ddlRegion').val();
        var hrinfo = $('#hrinfodropdown').val();
        if (region != null) {
            $('#ExportOptions').modal('hide');
            $.blockUI({ message: '<h1>Please wait generating excel data...</h1>' });
            //$.blockUI({ message: '<h1><img src="../Images/ajax_loader_blue_350.gif" /> Just a moment...</h1>' });
            $.blockUI({ css: { backgroundColor: '#f00', color: '#fff'} });
            var myData = region + ':' + hrinfo;

            $.fileDownload('Excel.ashx', {
                httpMethod: "POST",
                data: { data: myData },
                successCallback: function (url) {
                    //$("div#loading").hide();
                    //alert('ok');
                    //response.setHeader("Set-Cookie", "fileDownload=false; path=/");
                    $.unblockUI();
                },
                prepareCallback: function (url) {
                    //alert('ok');
                    //response.setHeader("Set-Cookie", "fileDownload=true; path=/");
                    $.unblockUI();
                },
                failCallback: function (responseHtml, url) {
                    //alert('ok');
                    // $("div#loading").hide();
                    // alert('Error while generating excel file');
                    //response.setHeader("Set-Cookie", "fileDownload=false; path=/");
                    $.unblockUI();
                }
            });          
        }
        else {
            alert('Please select a region....');
            return false;
        }
    }

参照元: https://www.experts-exchange.com/questions/28713105/Jquery-fileDownload-successcallback-not-working.html

私はそれがあなたのために働くことを願っています。

于 2017-03-08T07:12:04.867 に答える