通过js发送数据并从动作控制器接收PDF

本文关键字:控制器 PDF js 数据 通过 | 更新日期: 2023-09-27 18:18:04

我使用javascript从我的视图发送两个字符串到控制器。控制器接收该字符串,并根据它们的值返回pdf页面。我使用这种方法动态创建pdf。一切都很好,当我看firebug的时候,我得到了pdf,但我不知道该怎么做,javascript成功操作,如何在视图上显示这个pdf。

my js is

function GetDetails2(xx, xxx) {
$.ajax({
         url: ('/PdfReport/MyreportDemo'),
         type: 'POST',
         contentType: 'application/json',
         data: JSON.stringify({ dataOne: xx, dataTwo: xxx }),
         success: function (result) {                 
                    //alert("ok");
                },    
         error: function () {
               alert("error");
        }
       });
 }

通过js发送数据并从动作控制器接收PDF

JavaScript不太擅长处理二进制数据。直接处理这个问题的唯一方法是将数据编码为base-64编码的data-uri。通过<iframe>发布JSON也行不通,因为你需要一个<form>

一个可能的解决方案是更改后端以接受uri参数:

/PdfReport/MyreportDemo?dataOne=xx&dataTwo=xx

那么你可以使用<iframe>:

<iframe name="hiddenframe" style="display: none;" src="about:blank"></iframe>
<form id="reportDemoForm" method="post" action="/PdfReport/MyreportDemo" target="hiddenframe">
  <input id="dataOne" name="dataOne" type="hidden" value=""/>
  <input id="dataTwo" name="dataTwo" type="hidden" value=""/>
</form>
$('#dataOne').val('xx');
$('#dataTwo').val('xx');
$('#reportDemoForm').submit();

假设您想要下载该文件。如果您想在页面上显示它,您可以显示<iframe>,并适当调整其大小。