AJAX リクエストによるファイルのダウンロード: 総合ガイド
問題: 「ajax ダウンロード リクエスト」を開始しようとしていますボタンをクリックしても期待した結果が得られません。 JavaScript と PHP のデモを以下に示します。
JavaScript:
var xhr = new XMLHttpRequest(); xhr.open("GET", "download.php"); xhr.send();
PHP (download.php):
<? header("Cache-Control: public"); header("Content-Description: File Transfer"); header("Content-Disposition: attachment; filename= file.txt"); header("Content-Transfer-Encoding: binary"); readfile("file.txt"); ?>
上記のコードは期待どおりに機能しません。この問題を解決するために必要な手順について洞察を提供していただけますか?
解決策:
AJAX リクエストを介してファイルのダウンロードを開始することは実現できません。このタスクには、ファイルへの直接アクセスが必要です。
更新されたソリューション (2015 年 4 月 27 日):
「download」属性を使用:
JavaScript:
// Check if 'download' is supported if ('download' in HTMLAnchorElement.prototype) { // Create an anchor element var anchor = document.createElement('a'); // Set 'download' attribute and file URL anchor.download = 'file.txt'; anchor.href = 'download.php'; // Trigger file download anchor.click(); } else { // Fallback to previous method window.location = 'download.php'; }
元の解決策:
使用する'window.location':
JavaScript :
$.ajax({ url: 'download.php', type: 'POST', success: function() { window.location = 'download.php'; } });
簡単にするために、次のようになります。 AJAX リクエストを完全に回避し、単純に「window.location」を使用することをお勧めします。
以上がファイルのダウンロードに AJAX が機能しないのはなぜですか? 最適な代替手段は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。