您可以帮我解决以下问题吗?通过AJAX打开PDF文件,按住按钮
我有,你选择的参数生成将由将由浏览器中打开一个Struts 1.x的动作返回一个PDF报告的形式。这在系统中完全同步工作。
但我需要保护系统从用户请求报告而不必做所有的时间,把一个锁按钮,一旦生成的报告中才启用。
我的选择是在生成此报告的AJAX(异步调用)中创建一个函数,虽然此过程没有回答我,但我隐藏了按钮并显示“加载”,因此返回按钮I显示并隐藏“加载”。
,但我有两个不同的审判问题:
在第一次尝试与按钮和装载预计,但我的PDF文件,返回功能(数据)的jQuery的行为(代码1)下方在浏览器的下载窗口没有打开:
...
success: function (data) {
WinID var = window.open ('', 'newwin', 'width = 400, height = 500');
WinId.document.open();
WinId.document.write (data);
WinId.document.close();
...
在第二次尝试(代码2)使用道场返回PDF文件预期,但在浏览器的下载窗口中打开,以便重新启用按钮和禁用图像失去控制加载。
有什么办法打开使用jQuery或道场在控制我的DIV此PDF文件?
谢谢
HTML片段:
...
<tr>
<td colspan="3" align="center" valign="middle">
<div id="button">
<a href="javascript:execute();">
<img src="images/btnExecute.png" alt="Execute" border="0" class="inputImage" />
</a>
</div>
<div id="loadingImage">
<img src='images/loading.gif' style="{align:right;}" />
</div>
</td>
</tr>
...
代码1(jQuery的):
function execute()
{
$.ajax({
type:"GET",
url: "generateReport.do",
data: "action=print¶m1=param1",
dataType: "html",
beforeSend : function() {
//It works
$('#button').hide();
$('#loadingImage').show();
},
complete : function() {
$('#button').show();
$('#loadingImage').hide();
},
success : function(data) {
var WinId = window.open('', 'newwin', 'width=400,height=500');
WinId.document.open();
WinId.document.write(data);
WinId.document.close();
}
});
}
代码2(道场):
function execute()
{
//It works
$('#button').hide();
$('#loadingImage').show();
var url = "generateReport.do?action=print¶m1=param1";
require(["dojo/io/iframe"], function(ioIframe){
ioIframe.send({
url: url,
handleAs: "html"
}).then(function(data){
//It only works when my page returns the html message "Empty report"
$('#button').show();
$('#loadingImage').hide();
}, function(err){
});
});
}