我想下载在服务器上生成的.xls文件,当时.xls生成我想要锁定UI,但是在Ajax调用文件上没有下载 而数据来自浏览器,但它没有在浏览器上显示“另存为”对话框
我的问题陈述是,
1)我想在 Ajax调用上下载服务器上生成的.Xls 文件 Jquery的。
2)当生成.xls文件时,我想锁定UI。
Jquery ( Ajax函数,.ajaxform )无法正常工作下载文件。
attr()。submit()函数成功下载文件,但无法通知文件下载完成。
注意:1)从浏览器启用“另存为”选项。
2) .Xls file is getting generated from server side successfully
请提供可用的替代选项
答案 0 :(得分:0)
通过ajax做不可能。你可以在成功回调中做点什么。
window.location="download.xls/or/what/ever/?para1=value1...."
并在服务器上设置适当的下载标头。
答案 1 :(得分:0)
不幸的是,我们无法从AJAX请求下载文件
但您可以通过belo代码锁定屏幕
$("#id_of_form input[type='submit']").click(function(e){
// your code for lock screen here
return true;
});
答案 2 :(得分:0)
我认为你想跟踪下载状态(),你可以轻松锁定你的用户界面直到下载完成,我们可以用2种方式做到这一点,遗憾的是通过使用ajax调用我们无法启用下载文件,但是如果我们使用一些额外的html元素,我们可以通过jquery-ajax本身启用下载,你可以锁定你的UI,直到jquery完成下载。
方法1
使用您的代码生成xl(文件)并将该文件保存到任何临时位置
在ajax中调用此方法,并在响应中发送您之前保存的文件的名称
在jquery中创建一个临时<a>
标记并启用click事件,它将下载该文件。
完成下载后,您可以解锁您的用户界面
$.ajax({
type: "POST",
url: AQ.AMT.Url + "/Home/StoreImage",
//async: false,
data: JSON.stringify({ request: request }),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (Data) {
var _tempPPT = AQ.AMT.Url + "/Download/Temp/" + Data.Result + ".pptx";
// Trick for making downloadable link
a = document.createElement('a');
a.href = _tempPPT;// window.URL.createObjectURL(xhttp.response);
a.id = "idanchrPPT";
// Give filename you wish to download
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth() + 1; //January is 0!
var yyyy = today.getFullYear();
if (dd < 10) {
dd = '0' + dd
}
if (mm < 10) {
mm = '0' + mm
}
today = dd + '/' + mm + '/' + yyyy;
if (flipName == "")
a.download = "" + name + "-" + today + ".pptx";
else
a.download = "" + name + "-" + flipName + "-" + today + ".pptx";
a.style.display = 'none';
document.body.appendChild(a);
a.click();
$("#idanchrPPT").remove();
//deleting the file
var deleteFiles = {};
deleteFiles.FilePath = Data.Result;
setTimeout(function () {
$.ajax({
type: "Post",
data: JSON.stringify({ deleteFiles: deleteFiles }),
url: AQ.AMT.Url + "/Home/DeleteExportedPPt",
async: true,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
},
error: function (result) {
}
});
}, 1000);
},
error: function (e) {
}
});
方法2
使用XMLHttpRequest而不是Jquery $ ajax
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
var a;
if (xhttp.readyState === 4 && xhttp.status === 200) {
var _tempPPT = AQ.AMT.Url + "/Download/Template/ExportPPtTrend1.pptx";
// Trick for making downloadable link
a = document.createElement('a');
a.href = _tempPPT;// window.URL.createObjectURL(xhttp.response);
a.id = "idanchrPPT";
var k = xhttp.responseText;
// Give filename you wish to download
a.download = "test-file.pptx";
a.style.display = 'none';
document.body.appendChild(a);
a.click();
$("#idanchrPPT").remove();
//alert("ok");
$('.divLoader,.divBackgroundCo').hide();
}
};
// Post data to URL which handles post request
xhttp.open("POST", urlToHandler);
//Send the proper header information along with the request
xhttp.responseType = 'text';
//xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send();