ajax запрос на скачивание файла Excel показывает мне усеченный ответ - PullRequest
3 голосов
/ 22 декабря 2009

Я пытаюсь загрузить файл Excel с помощью Ajax (XMLHttpRequest).

По завершении обнаруживается, что текст responseText содержит всего 5 символов.
Инструмент сетевого анализа (Fiddler) показывает мне, что мой компьютер получил весь файл ..

так почему в тексте ответа отображаются только 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);

Ответы [ 2 ]

1 голос
/ 22 декабря 2009

Проблема, вероятно, в том, что XMLHttpRequest обычно не принимает двоичные данные, такие как файл Excel. Если вы просто хотите позволить пользователю загрузить файл, прочитайте пост Рамиза. Если вам нужно прочитать данные в JavaScript, попробуйте переключиться в текстовый формат, например CSV (или лучше для анализа, JSON). Если вам действительно нужно прочитать двоичный файл, здесь обсуждаются здесь и здесь .

0 голосов
/ 22 декабря 2009

Не используйте Ajax call (xmlhttprequest) для загрузки / выгрузки файлов. Лучше сделать это на стороне сервера.

...