2012-02-27 73 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); 

編輯:

實際上已發現此解決方案:

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' 
}); 

現在的問題是:如何將pdf名稱更改爲更高級別,例如map.pdf,而不是使用那麼長的醜陋字母數字字符串?

回答

1

您可以使用window.open另存爲對話框,例如

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

短的這我想要做什麼。唯一的問題是,一會兒,當我的迴應回來時,一個新標籤打開並立即關閉,這並不是很好。 – Sfairas 2012-04-10 15:40:00

+0

然後不要使用網絡瀏覽器 – 2012-04-10 16:36:24