Быстрый (и, надеюсь, простой) вопрос: мне нужно запустить загрузку файла PDF, созданного файлом PHP. Я могу это сделать:
<a href = "download.php">Download</a>
но должен ли я делать это по-другому? Может быть, Javascript? Вышеупомянутое работает, но в окне отображается «Загрузка ...» до начала загрузки. Я хотел бы сообщить пользователю, что что-то происходит.
Идеи?
Примечание: У меня уже есть код, который отправляет файл с сервера. Работает отлично. Этот вопрос просто о том, как лучше всего вызвать этот скрипт из клиента.
На некоторых сайтах есть загрузки, которые запускаются автоматически. Как они это делают?
Проблема с прямым URL-адресом заключается в том, что в случае ошибки сценария PHP он заменяет содержимое существующей страницы, чего я не хочу.
Это тоже случилось со мной, Том, отредактировал.
Я на самом деле нашел это полезным, потому что он появился первым, когда я искал "файл загрузки php-сервера с помощью javascript"



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


подделать это, используя обработчик события onclick, чтобы показать вращающийся gif
<a href = "download.php" onclick = "ShowDownloading();">Download</a>
РЕДАКТИРОВАТЬ
Да, javascript, что-то вроде:
<a href = "download.php" onclick = "this.innerHTML='Downloading..'; downloadPdf(this);">Download</a>
Если вам действительно нужно понять, когда начинается загрузка, вам, вероятно, нужно вызвать iframe, а затем использовать для него событие onload .. например:
// javascript
function downloadPdf(el) {
var iframe = document.createElement("iframe");
iframe.src = "download.php";
iframe.onload = function() {
// iframe has finished loading, download has started
el.innerHTML = "Download";
}
iframe.style.display = "none";
document.body.appendChild(iframe);
}
Вы должны вернуть false, чтобы отключить ссылку.
Решение, которое у вас есть для загрузки, в порядке. Возможно, вы захотите рассмотреть некоторую визуальную обратную связь с пользователем, возможно, используя javascript для отображения сообщения «Загружается, подождите, пожалуйста» на текущей странице при нажатии на ссылку с помощью обработчика onclick. Или просто укажите рядом со ссылкой, что загрузка может начаться через некоторое время. Поскольку IE выгружает страницу, останавливая любую анимацию GIF, я предпочитаю текстовую индикацию для загрузки файлов.
При автоматическом запуске загрузки обычно используется метатег внутри обычной страницы:
<META HTTP-EQUIV = "REFRESH" CONTENT = "10.0;URL=download.php">
Этот пример перенаправит браузер через 10 секунд на download.php.
Этот вопрос имеет отношение к PHP ничего такого, и то, как он назван, сформулирован и помечен тегами, вводит в заблуждение посетителей, которые ищут что-то совершенно другое. Я пишу это, потому что это первый результат, который я получил, когда искал что-то действительно связанное с PHP. Я пытался редактировать, но мое редактирование было отклонено :( Так что я любезно прошу оригинального автора или кого-то еще, кто имеет достаточно привилегий, чтобы удалить любые ссылки на PHP из этого сообщения.