当前位置: 首页 > 面试题库 >

ajax请求下载一个excel文件正向我显示截断的响应

尹臻
2023-03-14
问题内容

我正在尝试使用Ajax(XMLHttpRequest)下载Excel文件。

完成后,发现responseText只有5个字符。
网络嗅探工具(Fiddler)向我显示我的计算机收到了整个文件。

那么为什么responseText只显示5个字符?我已经尝试了同步和异步调用。

感谢您在这里提供的任何帮助。

var xmlHttpReq = getXmlHttpRequestObject();

function  getXmlHttpRequestObject(){
    var xmlhttp;

    if (window.XMLHttpRequest){// code for all new browsers
          xmlhttp=new XMLHttpRequest();

    }else if (window.ActiveXObject){// code for IE5 and IE6
         // xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

        progids = ['MSXML2.XMLHTTP.6.0', 'MSXML2.XMLHTTP.3.0', 'Microsoft.XMLHTTP'];

        for (i=0 ; i < progids.length; i ++){
            try {
                xmlhttp = new window.ActiveXObject(progids[i]);
                break;
            } catch (e) {
              //do nothing
            }
        }


    }


    return xmlhttp;


}

//utility method for http get
function doSynchronousGet(url){
    if(xmlHttpReq == null){
        xmlHttpReq = getXmlHttpRequestObject();
    }

    //change last param to true for making async calls.
    xmlHttpReq.open("GET" ,url,false);
    xmlHttpReq.setRequestHeader("Connection", "close");
    xmlHttpReq.send(null);
    return xmlHttpReq.responseText;
}



var resultText = doSynchronousGet(url);

alert('resultText length: '+ resultText.length);
alert('resultText: '+ resultText);

问题答案:

问题可能是XMLHttpRequest通常不像Excel文件那样接受二进制数据。如果您只想让用户下载文件,请阅读Ramiz的文章。如果您需要使用JavaScript读取数据,请尝试切换为CSV等文本格式(或更适合解析JSON)。



 类似资料:
  • 问题内容: 在我的ASP.NET MVC项目中,我使用ClosedXML生成了一个excel文件。 它在非ajax调用中效果很好。这是我的控制器动作方法 现在,我正在尝试通过ajax请求来执行此操作。但是文件不是从mvc控制器发送的。 我该怎么办呢?先感谢您。 问题答案: 为什么不?ramiramilu关于使用和是正确的。除了ASP.NET MVC3,我做过同样的事情。 我建议使用返回的控制器 仅

  • 问题内容: 我想在单击按钮时发送“ ajax下载请求”,所以我尝试了这种方式: javascript: download.php: 但是没有按预期工作,我该怎么办?先感谢您 问题答案: 2015年4月27日更新 进入HTML5场景的是download属性。它支持在Firefox和Chrome,并很快来到IE11。根据您的需求,只要您要下载的文件与您的网站位于同一来源,就可以使用它代替AJAX请求(

  • 问题内容: 当我单击按钮时,我想发送“ ajax下载请求”,因此我尝试了这种方式: javascript: download.php: 但是没有按预期工作,我该怎么办?先感谢您 问题答案: 进入HTML5场景的是download属性。它支持在Firefox和Chrome,并很快来到IE11。根据您的需求,只要您要下载的文件与您的网站位于同一来源,就可以使用它代替AJAX请求(或使用)。 您始终可以

  • 问题内容: 如何在一个HTTP请求中下载多个文件?我的意思是,当您有多个附件时,选择要下载的内容,然后按下载,这样便可以自动下载它们,而不必手动单击每个附件。 我正在使用PHP作为服务器端加密。 问题答案: 它 是 可以发送一个在HTTP响应多: 通常,HTTP与任何其他媒体类型一样对待多部分消息主体:严格作为有效负载。[…] HTTP用户代理应遵循与MIME用户代理在收到多部分类型时相同或相似的

  • 问题内容: 我正在尝试使浏览器下载从ajax响应接收到的pdf文件。 受jquery ajax下载pdf文件启发,我模拟了如下单击/下载事件: 不幸的是,这仅适用于Chrome,不适用于Firefox + IE。当我尝试在最后两个浏览器中触发它时,没有任何反应。 由于从CMS继承,脚本和标记被放置在iframe中,但是我不确定这是否有影响。 关于如何针对所有现代浏览器进行优化的想法? 问题答案:

  • 问题内容: 是否可以在HTML的主流中显示由jQuery AJAX调用返回的图像? 我有一个脚本,用于绘制带有标题的图像(图像/ PNG)。当我在浏览器中简单地调用它时,就会显示图像。 但是,当我在此脚本上使用jQuery进行AJAX调用时,我无法显示干净的图像,但其中包含许多奇怪的符号。这是我的脚本,使图像带有标题(图像/ PNG)。 然后,我的主要脚本中包含一个AJAX调用: 在我的HTML文