我有一個形式與各種文本框和兩個按鈕 - 導出到Excel和導出到CSV。ExtJS 4 - 如何使用Ajax下載文件?
用戶可以將值提供給表單中的不同字段,然後單擊其中一個按鈕。
預期的行爲是應該觸發一個Ajax請求,將字段的值作爲參數和所選文件(Excel/CSV按照按鈕點擊)應該被下載(我沒有提交表單,因爲需要在提交之前在值處做了一些處理)。
我一直使用的下載Ajax請求的成功函數下面的代碼:在服務器上的物理文件創建時
result = Ext.decode(response.responseText);
try {
Ext.destroy(Ext.get('testIframe'));
}
catch(e) {}
Ext.core.DomHelper.append(document.body, {
tag: 'iframe',
id:'testIframe',
css: 'display:none;visibility:hidden;height:0px;',
src: result.filename,
frameBorder: 0,
width: 0,
height: 0
});
上面的代碼已經在的情況下正常工作。但是在我目前的項目中,文件不是在服務器上創建的,而是內容僅通過適當的頭文件流到瀏覽器。
因此,當文件不存在於物理服務器上時,有沒有辦法使用Ajax下載文件?只是補充一點,我有一長串參數,我需要發送到服務器,因此不能將它們全部添加到iframe的src。
任何人都可以在此指導?
感謝您提前提供任何幫助。
http://stackoverflow.com/questions/5753811/get-response-file-use-extjs/5757369#5757369 –
感謝您分享鏈接Amol。我經歷了它,而我沒有使用它的唯一原因是我無法以這種方式將參數傳遞到服務器。正如問題中提到的,我有一長串參數,我不能附加到URL並傳遞給服務器。有什麼可以解決的,你可以建議嗎?再次感謝。 – netemp
關於通過POST下載文件,請參閱http://stackoverflow.com/questions/7563791/is-it-possible-to-download-a-file-with-http-post雖然我不喜歡那裏的最佳答案目前,因爲它似乎忽略了使用JavaScript來啓動下載的要求。 –