我正在使用javascript将两个字符串从我的视图发送到控制器。控制器接收该字符串并根据其值返回pdf页面。我正在使用this approach来动态创建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");
}
});
}
答案 0 :(得分:1)
JavaScript在处理二进制数据方面不是很擅长。直接处理此问题的唯一方法是将数据编码为base-64 encoded 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>
,并对其进行适当调整。