Как скачать файл через Ajax с HTTP POST (т.е. некоторая информация в теле)? - PullRequest
2 голосов
/ 27 января 2011

Всплывающее диалоговое окно загрузки может отображаться с помощью

window.location = "someUrl"

или просто иметь ссылку, которая отправляет метод HTTP GET и так далее.Я сделал это успешно.

Но теперь я хочу сделать Ajax с HTTP POST.Тело POST имеет JSON, как

{"val1":"key1", "val2":"key2"}

Затем на стороне сервлета оно читает JSON и выполняет запрос к базе данных, чтобы получить данные, а затем сгенерирует Excel на основе данных запроса.

Часть Iне может заставить его работать на стороне клиента.

Предполагается, что мой сервлет в resources/report/schedule создает файл Excel.

Это не всплывающее диалоговое окно загрузки при использовании Ajax :( Кто-нибудь может мне помочьиметь диалог загрузки с Ajax?

  function post25() {
            var jsonInput = {};
            jsonInput['作業区コード'] = "481";
            jsonInput['機械コード'] = "11";
            jsonInput['作業日'] = "2000/01/01";
            jsonInput = JSON.stringify(jsonInput);

            var ajaxRequest = new XMLHttpRequest();
            ajaxRequest.onreadystatechange = function() {
                if(ajaxRequest.readyState == 4 && ajaxRequest.status == 200) {
                    var res = ajaxRequest.responseText;
                    //location.href = "../resources/report/schedule";
                }
                else if(ajaxRequest.status == 409 || ajaxRequest.status == 500 || ajaxRequest.status == 204) {
                    alert(ajaxRequest.status);
                    document.getElementById("showMessage").innerHTML = ajaxRequest.responseText;
                }
            }
            ajaxRequest.open("POST", "../resources/report/schedule", true);
            ajaxRequest.setRequestHeader("Content-Type", "application/json");
            ajaxRequest.send(jsonInput); 
        }//end post25()

1 Ответ

10 голосов
/ 27 января 2011

По соображениям безопасности запрещено загружать файлы с использованием ajax .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...