ホームページ >ウェブフロントエンド >jsチュートリアル >PHP で AJAX 経由で CSV ファイルを強制ダウンロードする方法
質問:
AJAX 経由で CSV ファイルを強制ダウンロードするにはどうすればよいですか? call in PHP?
Background:
ユーザー入力に基づいて CSV ファイルを生成する AJAX 関数を作成しました。作成後、ユーザーにプロンプトを表示せずにファイルを自動的にダウンロードしたいとします。
PHP コード:
PHP ファイル (csv.php) で、次のことを試みました。次のスクリプトを使用して CSV ファイルを強制的にダウンロードします:
<code class="php">$fileName = 'file.csv'; $downloadFileName = 'newfile.csv'; if (file_exists($fileName)) { header('Content-Description: File Transfer'); header('Content-Type: text/csv'); header('Content-Disposition: attachment; filename='.$downloadFileName); ob_clean(); flush(); readfile($fileName); exit; } echo "done";</code>
問題:
このスクリプトを csv.php の最後で実行すると、ファイルはダウンロードされずにページに表示されます。
解決策:
AJAX はファイルの直接ダウンロードに使用できません。ファイルを強制的にダウンロードするには、次のいずれかの方法を使用できます:
例:
次のように AJAX 関数を変更して、ダウンロード リンクを含む新しいウィンドウをポップアップ表示できます:
<code class="javascript">function csv() { ajaxRequest = ajax(); postdata = "data=" + document.getElementById("id").value; ajaxRequest.onreadystatechange = function () { var ajaxDisplay = document.getElementById('ajaxDiv'); if (ajaxRequest.readyState == 4 && ajaxRequest.status == 200) { window.open(ajaxRequest.responseText); // Pop up a new window with the download link } } ajaxRequest.open("POST", "csv.php", false); ajaxRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); ajaxRequest.send(postdata); }</code>
以上がPHP で AJAX 経由で CSV ファイルを強制ダウンロードする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。