您可以幫我解決以下問題嗎?通過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){
});
});
}