Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Ajax-запрос на загрузку файла excel показывает мне усеченный ответ

Автор вопроса: rk2010Ответов: 2

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

По завершении обнаруживается, что 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);

downloadxmlhttprequestajax

Ответы

Ответ 1 · рейтинг 1 · Annie

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

Ответ 2 · Krunal

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы