2012-02-27 22 views
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の名前を変更することはできますか?

答えて

1

あなたはこれが短いの私が何をしたいん

window.open('print?parameters...','_blank'); 
+0

例えば、ダイアログボックスとして保存を持っているwindow.openを使用することができます。唯一の問題は、しばらくの間、私の反応が戻ってくると、新しいタブが開き、即座に閉じます。これは本当にうまくいきません。 – Sfairas

+0

ウェブブラウザを使用していない –

関連する問題