jQueryでAjax通信したデータをPHPで受け取り、zip化したファイルをダウンロードさせる方法
jQueryのAjaxで何らかのデータをPHP側に送信し、PHP側で当該データをファイルに書き込んだ上でzipファイル化し、ブラウザからダウンロードさせたい。PHP経由でzipファイルダウンロードは以前に行ったが、さらにAjax経由というのは対応したことが無かったので以下にソースコード等をメモ。
対応方法
PHP側
PHP側については以前にメモした方法でzipファイルを出力させること。Ajaxから受信したデータは$_REQUEST等で取り扱うと良い。
Ajax側
【PHP側のURL】【Ajaxで送信したいデータ】【ダウンロードさせたいファイル名】部分は適宜変更すること。
$('#download').on('click', function(){ $.ajax({ type: 'post', url: '【PHP側のURL】', data: {【Ajaxで送信したいデータ】}, xhrFields: { responseType: 'blob' } }).done(function (response, _textStatus, _jqXHR) { $('<a>', { href: URL.createObjectURL(new Blob([response], { type: response.type })), download: "【ダウンロードさせたいファイル名】", }).appendTo(document.body)[0].click(); }); return false; });
関連記事
-
-
jQueryでチェックボックスの全チェック&チェック解除する方法
フォームのチェックボックスで「全てにチェックを入れる」「全てのチェックを外す」と ...
-
-
jQueryのloadメソッドでファイル(ページ)を呼び出す
サイト内でヘッダーやフッター等共通のパーツはそれぞれ別ファイルに分けてPHPのi ...
-
-
FullCalendarでカレンダー内のイベントをクリックした際にタイトル以外の内容も表示させる方法
FullCalendarでカレンダー内のイベントをクリックした際にtitle以外 ...
-
-
jQuery UIを使って簡単にダイアログを表示させる方法
ブラウザ上でユーザーに対してちょっとした確認を行いたい場合はJavaScript ...
-
-
jQueryでユーザーが編集可能な文字列をページ上に表示する際にエスケープする方法
GETパラメータを取得し、その内容をページ上に表示したいケースがあった。また、A ...