Я хочу скачать файл, когда я нажимаю на ссылку. Файл обслуживается динамически.
<a href="/server/myfunc?id=XXX" download="proposed_file_name">Download!</a>
Но мне нужно иметь возможность отображать ошибку пользователю, если ссылка /server/myfunc?id=XXX не предоставляет файл. Я могу вернуть логическое значение false или любой http-код по этой ссылке, если файл отсутствует.
Каким должен быть наиболее подходящий метод для этой реализации. Обратите внимание, что я не хочу каким-либо образом изменять текущее состояние страницы, просто запускаю загрузку файла, не затрагивая страницу. И отображать ошибку, если файл не загружается.
2 ответа
Вы не можете сделать это только с html, поскольку это статический язык. Я бы посоветовал вам использовать предложение if/else, написанное на php или java. Здесь у вас есть некоторая документация и конкретный образец здесь. В любом случае здесь вы образец, который может подойти именно для вашего случая (с учетом того, что вы вставляете php в html).
<?php
var = url
if (isset($var) && ($var === true){ ?>
<a href="/server/myfunc?id=XXX" download="proposed_file_name">Download!</a>
<?php } else { ?>
<p>Hey, there is no URL!</p>
<?php } ?>
Я знаю, что отвечаю очень поздно, но это может быть полезно для тех, кто сталкивается с такой проблемой.
При использовании синхронных HTTP-вызовов очень сложно отобразить сообщение об ошибке, так как оно заменит всю веб-страницу, чего мы не хотим.
Итак, лучше использовать AJAX
Щелкните здесь Блог JohnCulviner подробнее - как использовать AJAX для загрузки
Кроме того, перейдите по следующей ссылке SO Загрузите файл по запросу Ajax
Похожие вопросы
Связанные вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Имейте в виду, что JavaScript — это НЕ то же самое, что Java! Включите все ярлыки, относящиеся к вашему вопросу; например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [svelte] и т. д.