情況1,提交的是非json數據
//流程:臨時構建一個iframe並添加到要提交的form-》修改form的target指向該iframe-》提交form,然后刪除臨時iframe
function downloadFile() {
var $iframe = $('<iframe name="downloadFrame" style="display: none;" frameborder="0" />');
$("#addxxformfx").append($iframe); //addxxformfx:form的id
$("#addxxformfx").attr("action","http://localhost:5080/lpproject/report2/previewHtml2.action");//要提交到的action
$("#addxxformfx").attr("target","downloadFrame");//downloadFrame,指向上面iframe的名字
$("#addxxformfx").submit();
$iframe.remove();
}
情況2,提交是的json數據
使用ajax,ajax的返回值類型是json,text,html,xml類型,或者可以說ajax的發送,接受都只能是string字符串,不能流類型,所以無法實現文件下載。
方法:
1,需要有一個通過文件名等下載文件的方法
2,將要下載文件生成到服務器並獲得文件路徑,設置url到回調函數
3,通過在回調函數里獲得一個生成文件的相關url,通過創建一個iframe,並設置其src值為文件url,這樣訪問下載方法操作來實現文件下載且頁面無刷新。
//iframe:
<iframe src="" style="display:none;" id="downFileIframe"></iframe>
$.doAjax({
url:basePath+'resultTarget/downExcelTmpl.action',
data:'nodes='+$.toJSONString(nodeArray),
callback:function(msg){
if (msg.status == 0) {
var url = basePath+"download.action?fileName="+encodeURI(encodeURI(escape("業績-任務.xls")))+"&filePath="+msg.info;
$('#downFileIframe').attr('src',url);
} else {
alert(msg.info);
}
}
});
