2
私はExtJS AJAXリクエストを作成し、標準ブラウザの[名前を付けて保存]ダイアログボックスをユーザに表示します。ダウンロードするファイルは、pdf、jpg、またはpngファイルにすることができます。ExtJS AJAXダイアログボックスで保存
現在、AJAXリクエストは正常に送信されましたが、非同期であるため、ダイアログボックスは表示されません。
私は単純にAJAXを使用することはできませんでしたが、要求を行う前に使用する必要のあるJavaScriptコードがたくさんあり、実際にJavaに書き直す気がしません。
私のコードは次のようになります。私のコントローラで
var params = getPrintInfo(form);
Ext.Ajax.request({
url : 'print',
method : 'POST',
params : {
customData: params.customData,
dpi: params.dpi,
format: params.format,
grid: params.grid,
title: params.title
},
autoAbort : false,
success : function(result, request) {
if(result.responseText==''){
//display error message
}else{
// display save as dialog box
}
}
});
私がするヘッダを設定しています:
httpResponse.setHeader("Content-disposition", "attachment; filename=" + this.config.getString("print.file.name")+outputType);
EDIT:
が実際にこの解決策を見つけた:
Ext.DomHelper.append(document.body, {
tag: 'iframe',
frameBorder: 0,
width: 0,
height: 0,
css: 'display:none;visibility:hidden;height:1px;',
src: 'http://blabla.com/f75e927b-2041-473e-86ba-cbbc60dbc285.pdf'
});
今質問があります:どのように私は長い醜い英数字の文字列を持つ代わりに、pretier、例えばmap.pdfのようにPDFの名前を変更することはできますか?
例えば、ダイアログボックスとして保存を持っているwindow.openを使用することができます。唯一の問題は、しばらくの間、私の反応が戻ってくると、新しいタブが開き、即座に閉じます。これは本当にうまくいきません。 – Sfairas
ウェブブラウザを使用していない –