У меня есть следующий код, чтобы загрузить файл .csv:Использование JQuery и IFrame для загрузки файла
$.ajax({
url: urlString,
contentType: "application/json; charset=utf-8",
dataType: "json",
cache: false,
success: function (data) {
if (data) {
var iframe = $("<iframe/>").attr({
src: data,
style: "visibility:hidden;display:none"
}).appendTo(buttonToDownloadFile);
} else {
alert('Something went wrong');
}
}
});
urlString указывает на RESTful сервис, который генерирует файл в формате CSV и возвращает путь к файлу, который присваивается атрибуту src для iFrame. Это работает для любых CSV-файлов, но у меня проблемы с XML-файлами. Когда я использую тот же код, но изменяя contentType на «text/xml» и использую его для загрузки XML-файлов, это не работает.
Могу ли я использовать тот же подход для файлов .xml?
UPDATE:
Благодаря Бен для указал мне в правильном направлении. Оказывается, мне вообще не нужен звонок ajax. Вместо этого я могу просто использовать iFrame и его атрибут url для вызова веб-службы, которая будет генерировать контент, добавить заголовок (Content-Disposition
) и вернуть поток.
Боюсь, я не совсем понимаю работу - предложил ты. Мой сервер - .NET (WCF). Вы хотите сказать, что я должен добавлять заголовки со стороны сервера? – notlkk
Да. Если вы не контролируете RESTful API, то вы не можете установить заголовки, используя только HTML/JS. Итак, что вы делаете, это создать скрипт на вашем сервере .NET, который может получить удаленный URL-адрес в качестве аргумента, забрать удаленный файл, повторно упаковать его с новыми заголовками и затем выполнить его как вложение. –
Я вижу. Нужно ли мне все 4 заголовка, как вы указали? И какой тип содержимого я должен использовать в своем javascript? – notlkk