1

私は簡単なダウンロードフォームを持っており、送信時にユーザーがPDFをダウンロードし、同時にありがとうページを開くことができるようにしたいと思います。

window.openといくつかのPHPメソッド(ヘッダー)を使用してみました。PHPメソッドがダウンロードpdf画面をポップアップするジョブを実行している間、ページはありがとうページにリダイレクトされません。

誰かがJSまたはPHPのいずれかを手伝うことができますか?

私はどちらにも精通していません-コード全体を共有できれば本当にありがたいです。ありがとうございました!:)

4

4 に答える 4

2

最善の方法は、通常どおりお礼状を開き、タイムアウト(を使用setTimeout)時に、を使用window.open("url", "_blank")してPDFダウンロードを開くことです。

于 2012-09-11T12:54:03.900 に答える
1

3つのファイルが必要です。

  1. フォームページのファイルには次のものがあります。
    <form action="thanks.php" id="form" method="POST"><!-- your form content and a submit button here--></form>

  2. 以下を含むthanks.phpページ:
    <iframe src="download_pdf.php" style="display:none;" />

  3. そして最後にdownload_pdf.phpページを作成します。
<?php
 $file = 'filename.pdf';
 if(!file){
     die('Error: file not found');
 }else{
     header("Cache-Control: public");
     header("Content-Description: File Transfer");
     header("Content-Disposition: attachment; filename=$file");
     header("Content-Type: application/pdf");
     header("Content-Transfer-Encoding: binary");
     readfile($file);
 }
 ?>
于 2012-09-11T14:21:01.183 に答える
0

他のコンテンツがブラウザに送信される前にのみ、header()を使用してPHPリダイレクトを実行できます。ページが読み込まれたら、JSを使用する必要があります。これはJSでは十分に簡単です。

window.location = "http://example.com";

ただし、一度に2つのウィンドウをロードすることには疑問があります。ありがとうページを表示し、そのページのPDFを表示/ダウンロードできるリンクを提供する方が簡単な場合があります。

于 2012-09-11T12:59:44.033 に答える
0

実際、ユーザーは、ありがとうページのURLを再利用してPDFを繰り返しダウンロードしないでください。これにより、最初にユーザー情報を取得する目的が失われます。そのため、ダウンロードを表示できるありがとうページでタイムアウトが必要になります。ただし、代わりにポップアップを使用して、どういうわけかありがとうページのURLをマスクできるかどうかを確認してください。

于 2013-03-16T10:50:47.713 に答える