[解決済み] ajax リクエストを使用してファイルをダウンロードする
2022-11-01 16:40:13
質問
ボタンをクリックした時に、ajax download request"を送信したいので、この方法で試してみました。
javascriptを使用しています。
var xhr = new XMLHttpRequest();
xhr.open("GET", "download.php");
xhr.send();
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");
?>
が、期待したように動作しません、どうすればいいですか?ありがとうございました。
どのように解決するのですか?
2015年4月27日更新
HTML5シーンにアップしてきたのは
ダウンロード属性
. これは
対応
であり、まもなくIE11にも導入されます。あなたのニーズによっては、AJAXリクエストの代わりにこれを使用することもできます(あるいは
window.location
を使用する)代わりに使用することもできます。
あなたはいつでも、AJAX リクエストを
window.location
を使用することでフォールバックさせることができます。
JavaScript
を使って、もし
download
がサポートされているかどうかをテストし、サポートされていない場合は
window.location
.
オリジナルの回答
あなたは物理的にダウンロードを促すためにファイルに移動する必要があるので、AJAXリクエストはダウンロードプロンプトを開くことができません。代わりに、download.phpに移動するために成功関数を使用することができます。これはダウンロードのプロンプトを開きますが、現在のページを変更しません。
$.ajax({
url: 'download.php',
type: 'POST',
success: function() {
window.location = 'download.php';
}
});
これは質問に対する答えであるにもかかわらず、単に
window.location
を使用し、AJAXリクエストを完全に回避する方が良いでしょう。
関連
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み] JavaScriptでJSONをきれいに印刷する
-
[解決済み] jQueryを使ったAjaxリクエストの中断
-
[解決済み] ファイルへの追記はどのように行うのですか?
-
[解決済み] jQuery Ajax呼び出し後のリダイレクトリクエストを管理する方法
-
[解決済み] どうすればjQueryに非同期ではなく、同期のAjaxリクエストを実行させることができますか?
-
[解決済み] 文字列のn番目の出現箇所を取得するには?
-
[解決済み] Chromeの拡張機能開発にWebStormを使用するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 配列からオブジェクトを生成する
-
[解決済み] Google maps API V3 - 同一地点に複数のマーカーを設置する。
-
[解決済み] ExtJS 4のイベントハンドリングについて
-
[解決済み] 文字列のn番目の出現箇所を取得するには?
-
[解決済み] URL/アドレスバーからJavascriptの関数を呼び出す
-
[解決済み] オブジェクトの配列からReactコンポーネントをレンダリングする
-
[解決済み] 無効になっている入力フィールドの値を送信する
-
[解決済み] jqueryはjavascriptのライブラリなのかフレームワークなのか?[クローズド]
-
[解決済み] JavaScript のオブジェクトの配列を比較し、最小値/最大値を取得する
-
[解決済み] BlobからArrayBufferへ移行する方法