これがどのように可能かを理解しようとしています。
ユーザーがリンクをクリックできるようにして、特定のファイルをダウンロードできるようにします。ファイルは Ajax 呼び出しで決定されます (現在、ハードコードされた値しかありません)。
ただし、私の状況は次のとおりです。Ajaxが呼び出されると、リクエストに対して指定されたリンクは、フロントコントローラーを備えたフレームワークの一部であり、URLがリダイレクトされます。したがって、download.php のような名前のファイルへのリンクを送信して、そこにヘッダー コードだけを含めることはできません。フレームワーク プロセス全体を通過し、最終的に Ajax 呼び出しを処理するメソッドに到達します。
これが私のコードです:
$('.jobApplicationDownload').click(function() {
var that = $(this);
$
.ajax({
type : "POST",
url : "myfw/businessHome/applications/downloadJobApplicationItem",
data : {
"ajaxFileType" : that.attr("data-ftype"), "ajaxApplicationId" : that.attr("data-did")
},
success : function(html) {
alert(html);
},
error : function(XMLHttpRequest,
textStatus, errorThrown) {
alert("ERROR");
}
});
});
そして、ここにPHPがあります。これは、Front Controller と他の多くの方法を実行した後であることに注意してください。これは決して、Ajax 呼び出し後の最初の停止ではありません。
function downloadJobApplicationItem() {
//download.php
//content type
$fileName = "/myfw/common/jobs/resumes/eZACKe_1359081853_Week Three Sprints & Hurdles Workout 24th - 28th of Sept (1).pdf";
header('Content-disposition: attachment; filename='.$fileName);
header('Content-type: application/pdf');
//read from server and write to buffer
readfile('/myfw/common/jobs/resumes/eZACKe_1359081853_Week Three Sprints & Hurdles Workout 24th - 28th of Sept (1).pdf');
echo $_POST['ajaxFileType']. " ". $_POST['ajaxApplicationId'];
}
編集:ああ、ちなみに、この結果は、私がエコーしているアラートであり、ファイルのダウンロードは開始されていません。