首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法在Jquery的Ajax调用上下载xls

无法在Jquery的Ajax调用上下载xls
EN

Stack Overflow用户
提问于 2016-07-26 16:11:51
回答 3查看 394关注 0票数 0

我想下载在服务器上生成的.xls文件,到.xls生成时,我想锁定UI,但是在Ajax上,调用文件没有被下载,而数据在浏览器中出现,但它没有在浏览器上显示“另存为”对话框。

我的问题是,

1)我想下载在Jquery的Ajax调用服务器上生成的.Xls文件。

2)生成.xls文件时,我希望锁定UI.

Jquery的 (Ajax函数,.ajaxform) 不工作下载文件。

attr().submit()函数成功下载文件,但它没有通知文件下载完成的功能。

注意:1)从浏览器中启用“另存为”选项。

代码语言:javascript
运行
复制
 2) .Xls file is getting generated from server side successfully

请提供任何可供选择的

EN

回答 3

Stack Overflow用户

发布于 2016-07-26 16:18:47

通过ajax是不可能做到的。你可以在你的成功回击中做些类似的事情。

代码语言:javascript
运行
复制
window.location="download.xls/or/what/ever/?para1=value1...."

并在服务器上设置适当的下载头。

票数 0
EN

Stack Overflow用户

发布于 2016-07-26 16:18:51

不幸的是,我们无法从AJAX请求下载文件

但是你可以用belo代码锁定屏幕

代码语言:javascript
运行
复制
$("#id_of_form input[type='submit']").click(function(e){

// your code for lock screen here

return true;
});
票数 0
EN

Stack Overflow用户

发布于 2016-10-18 11:52:47

我认为您想要跟踪下载状态(),U可以很容易地锁定您的UI,直到下载完成为止,我们可以用两种方式完成它,不幸的是,通过使用ajax调用我们无法启用下载文件,但是如果我们使用一些额外的html元素,我们可以启用jquery-ajax本身和您可以锁定您的UI直到jquery完成下载。

方法1

  1. 使用后面的代码生成xl(文件),并将该文件保存到任何临时位置
  2. 在ajax中调用此方法并响应发送您之前保存的文件的名称
  3. 在jquery中创建一个临时<a>标记并启用click事件,它将下载该文件。
  4. 下载完成后,你可以解锁你的用户界面。 $.ajax({ type:"POST",url: AQ.AMT.Url + "/Home/StoreImage",//异步: false,data: JSON.stringify({ request: request }),contentType:"application/json;charset=utf-8",dataType:"json",dataType:“json”,函数(Data) { var _tempPPT = AQ.AMT.Url +/Download/Temp/“+ Data.Result +”.pptx;//作可下载链接的技巧a= document.createElement('a');a.href =_window.URL.createObjectURL you;// window.URL.createObjectURL(xhttp.response);a.id = "idanchrPPT";//给出您希望下载的var今天=新日期();var dd = today.getDate();var mm = today.getMonth() + 1;//一月是0!var yyyy = today.getFullYear();if (dd < 10) { dd = '0‘+ dd } if (mm < 10) { mm = '0’+ mm }今天= dd + '/‘+ mm + '/’+ yyyy;if (flipName ==“) a.download =”+ name + "-“+当今+ ".pptx";否则a.download =“+ flipName + "-”+flipName+ "-“+今天+”.pptx;a.style.display = 'none';document.body.appendChild(a);a.click();$("#idanchrPPT").remove();//删除文件var deleteFiles = {};deleteFiles.FilePath = Data.Result;setTimeout($.ajax () ){ $.ajax({ type:"Post",data: JSON.stringify({ deleteFiles: deleteFiles }),url: AQ.AMT.Url + "/Home/DeleteExportedPPt",异步: true,contentType:"application/json;dataType:"json",成功:函数(结果){ },错误:函数(结果){};},};};},错误:函数(e) { });

方法2

使用XMLHttpRequest而不是Jquery $ajax

代码语言:javascript
运行
复制
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();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38594955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档