2009-10-02 9 views
12

私はユーザーがオンラインで完了するウェブフォームを持っています。彼らが提出を押すと、彼らのためのファイルのダウンロードを開始します。フォーム提出後の自動開始ファイルのダウンロード

現時点では、フォームの提出を処理して、ユーザーに適したファイルを生成し、適切なヘッダーで消します。例...

ただし、すぐにダウンロードが開始されるため、元のフォームはブラウザで画面に残ります。

ダウンロードが完了すると(またはダウンロードが開始される前に)、「ありがとう」という画面に行きたいと思っています。私はそれが可能であることを知っています。あなたが訪れるほぼすべてのダウンロードサイトがこれを行います(通常、ダウンロードが始まる前にあなたに広告が満載されます)。

ですから、1秒後にダウンロードを開始する「ありがとうございました」画面を表示するにはどうすればよいですか?

フォームが再充填されずにファイルを再度ダウンロードしないようにするには、どのような解決策がバックボタンの動作にどのように影響しますか?

私はサーバー上でPHPを使用しており、クライアントで使用できるJavascript(およびjQuery)に依存しています。

ありがとうございます。

答えて

23

あなたはにフォームを送信することができますが、あなたに文書に感謝し、METAは、ファイルのダウンロードにをリフレッシュそこを置く:

<meta http-equiv="refresh" content="3;url=download.php"> 
<p>Thank you! The download will start in 3 seconds. If not, use this link to download the <a href="download.php">file</a></p> 
+0

ただのメモ - firefoxでトリガーしません。 – Andrej

+1

@Andrej 'body'に' head'と 'p'に' meta'を入れましたか? – Gumbo

3

はあなたのdonwnload、何かが「ありがとうと言い、2ページ目を追加します数秒」で開始し、JavaScriptを使用してダウンロードトリガー:

$(document).ready(function(){ 
    window.setTimeout(function(){ 
    window.location = 'http://yourdownloadhost.com/file.zip'; 
    }, 1500); 
}); 

をまたはメタリダイレクトを使用します。

+0

メタリダイレクトが機能するときにjavascriptを使用する理由 –

+0

Gumboの投稿への私のコメントからわかるように、私自身はMETAのリダイレクトを好みます。しかし、OPの「Javascript(とjQuery)に頼ることができます」という誤解を招いていました。 しかし、一部のテンプレートシステムでは、に物を注入するのが難しくなります。だから時にはJSが選択肢かもしれない。 – middus

+0

あまりにもヘッダーにする必要があります。体内のAFAIK JavaScriptは違法です。 –

0

ページに非表示のiframeを挿入し、このiframeにフォームを送信できます。