Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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
C# Pdf文档作为对ajax调用的响应_C#_Ajax_Pdf_Asp.net Core_Model View Controller - Fatal编程技术网

C# Pdf文档作为对ajax调用的响应

C# Pdf文档作为对ajax调用的响应,c#,ajax,pdf,asp.net-core,model-view-controller,C#,Ajax,Pdf,Asp.net Core,Model View Controller,我需要一个脚本,该脚本将json字符串传递给控制器中的函数,并处理响应pdf文档,以将其视为下载给用户 我返回一个c格式的FileResult数据类型的pdf文档,作为ajax调用的响应,该调用将JSON字符串传递给函数。 我需要这个pdf文档被视为下载给用户。我怎样才能做到这一点?我试图在ajax的成功中编写代码,但控件出错,通过调试,我发现这是一个解析错误 Ajax代码类似于 C代码类似于: 当上述代码执行时,会调用错误警报,但此c函数返回一个pdf文档,但似乎ajax不接受它。您实际上不需

我需要一个脚本,该脚本将json字符串传递给控制器中的函数,并处理响应pdf文档,以将其视为下载给用户

我返回一个c格式的FileResult数据类型的pdf文档,作为ajax调用的响应,该调用将JSON字符串传递给函数。 我需要这个pdf文档被视为下载给用户。我怎样才能做到这一点?我试图在ajax的成功中编写代码,但控件出错,通过调试,我发现这是一个解析错误

Ajax代码类似于

C代码类似于:


当上述代码执行时,会调用错误警报,但此c函数返回一个pdf文档,但似乎ajax不接受它。

您实际上不需要ajax来进行此下载调用,您可以这样做

function DownloadFile(){
    //do some calculation
    window.location="{url to the action}?argument1=value1&argument2=value2....."
}
但是,如果必须通过ajax来实现,您可以获得并实现这一点

function DownloadFileUsingAjax(){
    $.ajax({
        url: "{url to the action}",
        data: {
            //Send json data that you want
        }
    })
    .done(function(data){
        //download function is from download.js
        download(data, fileName, fileMimeType);
    });
}

另一种方法是,您可以尝试模拟按钮单击事件来下载文件,如

客户端

@section Scripts{ 
    <script type="text/javascript">
        $(document).ready(function(){
            $.ajax({
                url: '/Home/GetPDF',
                method: 'get',
                contentType:'application/json',
                xhrFields: {
                    responseType: 'blob'
                },
                success: function (data, status, response) {
                    var filename = "";
                    var disposition = response.getResponseHeader('Content-Disposition');
                    if (disposition && disposition.indexOf('attachment') !== -1) {
                        var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
                        var matches = filenameRegex.exec(disposition);
                        if (matches != null && matches[1]) filename = matches[1].replace(/['"]/g, '');
                    }
                    let a = document.createElement('a');
                    a.href = window.URL.createObjectURL(data);
                    a.download = filename;
                    document.body.append(a);
                    a.click();
                    window.URL.revokeObjectURL(url);
                }
            });
        });
    </script>
}

显示您的代码,也许我们可以提供帮助you@MarkSchultheiss我已经加上了。
function DownloadFileUsingAjax(){
    $.ajax({
        url: "{url to the action}",
        data: {
            //Send json data that you want
        }
    })
    .done(function(data){
        //download function is from download.js
        download(data, fileName, fileMimeType);
    });
}
@section Scripts{ 
    <script type="text/javascript">
        $(document).ready(function(){
            $.ajax({
                url: '/Home/GetPDF',
                method: 'get',
                contentType:'application/json',
                xhrFields: {
                    responseType: 'blob'
                },
                success: function (data, status, response) {
                    var filename = "";
                    var disposition = response.getResponseHeader('Content-Disposition');
                    if (disposition && disposition.indexOf('attachment') !== -1) {
                        var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
                        var matches = filenameRegex.exec(disposition);
                        if (matches != null && matches[1]) filename = matches[1].replace(/['"]/g, '');
                    }
                    let a = document.createElement('a');
                    a.href = window.URL.createObjectURL(data);
                    a.download = filename;
                    document.body.append(a);
                    a.click();
                    window.URL.revokeObjectURL(url);
                }
            });
        });
    </script>
}
public FileResult GetPDF(string statementHTML)
{
    var fileByte = System.IO.File.ReadAllBytes(@"xxx\Test.pdf");
    return File(fileByte, "apllication/pdf", "Test.pdf");
}