У меня есть PHP-файл, который возвращает выходные данные в формате PDF. Работает нормально, если я обращаюсь к файлу напрямую.
Я хочу получить PDF-файл через AJAX.
В нативном Javascript, работает нормально:
var req = new XMLHttpRequest();
req.open("POST", "./api/pdftest.php?wpid="+wpid, true);
req.responseType = "blob";
req.onreadystatechange = function ()
{
if (req.readyState === 4 && req.status === 200)
{
var blob=req.response;
var filename = "test.pdf";
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = "test.pdf";
link.click();
var file = new File([blob], filename, { type: 'application/force-download' });
window.open(URL.createObjectURL(file));
}
};
req.send();
Но я думаю, я бы использовал jQuery для обеспечения кросс-браузерной совместимости (хотя приведенный выше фрагмент работает в Edge, Chrome и Firefox на ПК, я не тестировал его вдругие браузеры / на других платформах)
Поэтому я попытался переписать функцию:
url='./api/pdftest.php?wpid='+wpid;
$.ajax(
{
url: url,
method: 'POST',
responseType: 'blob',
success: function(data)
{
var filename='test.pdf';
var blob=new Blob([data]);
var filename = "test.pdf";
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = "test.pdf";
link.click();
var file = new File([blob], filename, { type: 'application/force-download' });
window.open(URL.createObjectURL(file));
}
});
Эквивалент jQuery позволяет мне загрузить файл PDF, но ... файл PDF пуст.
Так что я думаю, что я делаю что-то не так, вероятно, в преобразовании данных в BLOB.Но что?Я надеюсь, что кто-то может понять, что я делаю неправильно.
Я использовал возрасты в StackOverflow, прочитал много предложений - но не нашел никакого ответа.Я просто не вижу леса за деревьями.