0

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

我的js是

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");
        }
       });
 }
4

1 回答 1

1

JavaScript 不太擅长处理二进制数据。直接处理此问题的唯一方法是将数据编码为base-64 编码的 data-uri。通过 an 发布 JSON<iframe>也不起作用,因为您需要一个<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>, 并适当调整其大小。

于 2013-06-13T08:01:43.500 回答