ajax下载excel文件的请求显示我被截断的响应

时间:2009-12-22 04:57:37

标签: ajax xmlhttprequest download

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

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

那么为什么responseText只显示5个字符?我试过了Synch和Asynch的电话。

感谢您提供任何帮助。

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);

2 个答案:

答案 0 :(得分:1)

问题可能是XMLHttpRequest通常不会像Excel文件那样使用二进制数据。如果您只是想让用户下载文件,请阅读Ramiz的帖子。如果您需要在JavaScript中读取数据,请尝试切换到CSV等文本格式(或更好地解析,JSON)。如果您确实需要阅读二进制文件,则会讨论herehere

答案 1 :(得分:0)

不要使用Ajax调用(xmlhttprequest)来下载/上传文件。最好在服务器端做。