2016-11-21 7 views
2

フォームの送信ボタンをクリックした後、訪問者がPDFをダウンロードできるようにしたい。ユーザーがフォームを送信した後にPDFをダウンロードする

[ダウンロード]ボタンを押してフォームの詳細を送信した後、PDFは自動的に「名前を付けて保存」ダイアログを表示します。

私はJavascriptを使用して詳細をPHPフォームプロセッサに送信しています。私はいずれかの言語の専門家ではなく、オンラインで見つかったさまざまな例からコードをまとめました。

一言で言えば、フォーム提出後に自動的にダウンロードを開始する方法はわかりません。それを達成するためにPHPまたはJavaScriptを使用すべきかどうかはわかりません。

事前にお気軽にアドバイスをお願いします。おかげ

これはJavascript

$("#fhb_download_form").validator().on("submit", function (event) { 
     if (event.isDefaultPrevented()) { 
      formError1(); 
      submitMSG1(false, "Did you fill in the form properly?"); 
     } else { 
      event.preventDefault(); 
      submitForm1(); 
     } 
    }); 


    function submitForm1(){ 
     var fhb_fullname = $("#fhb_fullname").val(); 
     var fhb_email = $("#fhb_email").val(); 

     $.ajax({ 
      type: "POST", 
      url: "php/fhb_form.php", 
      data: "fhb_fullname=" + fhb_fullname + "&fhb_email=" + fhb_email, 
      success : function(text){ 
       if (text == "success"){ 
        formSuccess1(); 

       } else { 
        formError1(); 
        submitMSG1(false,text); 
       } 
      } 
     }); 
    } 

    function formSuccess1(){ 
     $("#fhb_download_form")[0].reset(); 
     submitMSG1(true, "Download Ebook") 

    } 

    function formError1(){ 
     $("#fhb_download_form").removeClass().addClass('shake animated').one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function(){ 
      $(this).removeClass(); 
     }); 
    } 

    function submitMSG1(valid, msg){ 
     if(valid){ 
      var msgClasses = "h3 text-center tada animated text-success"; 
     } else { 
      var msgClasses = "h3 text-center text-danger"; 
     } 
     $("#fhb_msgSubmit").removeClass().addClass(msgClasses).text(msg); 
    } 

そして、これでは、PHP処理コード

$errorMSG = ""; 

if (empty($_POST["fhb_fullname"])) { 
    $errorMSG = "Name is required "; 
} else { 
    $name = $_POST["fhb_fullname"]; 
} 

if (empty($_POST["fhb_email"])) { 
    $errorMSG .= "Email is required "; 
} else { 
    $email = $_POST["fhb_email"]; 
} 

$EmailTo = "[email protected]"; 
$Subject = "Ebook Downloaded by $name"; 

$Body = ""; 
$Body .= "Name:\n"; 
$Body .= $name; 
$Body .= "\n\n"; 

$Body .= "Email:\n"; 
$Body .= $email; 
$Body .= "\n\n"; 

$success = mail($EmailTo, $Subject, $Body, "From:".$email); 

おかげ

+1

[** 'this answer' **]をチェックしてください(http://stackoverflow.com/questions/1465573/forcing-to-download-a-file -using-php#answer-1667651)。 –

+0

こんにちはBhavik。それは働いています。私はPHPファイルの最後に共有したコードを貼り付け、$ yourfileを自分のPDFに名前を変更しました。 submitを押すと奇妙なエラーが発生します。 [http://www.zenwebcreative.com.au/_dev/financecorp/FC034/]にアクセスしてフォームに記入すると、私の言うことがわかります。ありがとう –

+0

あなたはそれがうまくいっている。しかし、あなたが投稿したリンクは壊れています。 –

答えて

0

回答は、あなたが共有したスクリーンショットやコメントに基づいています。

サーバー側では、「成功」と表示されている行を削除する必要があります。応答としてファイルのみを返す必要があります。

クライアント側では、submitForm1の機能を以下のように更新してください。

function submitForm1(){ 
    var fhb_fullname = $("#fhb_fullname").val(); 
    var fhb_email = $("#fhb_email").val(); 

    $.ajax({ 
     type: "POST", 
     url: "php/fhb_form.php", 
     data: "fhb_fullname=" + fhb_fullname + "&fhb_email=" + fhb_email, 
     success : function(text){ 
      // Whatever processing you need to do here 
      formSuccess1(); 
     } 
    }); 
} 

ご使用の機能に応じて機能をチェックする必要があります。あなたがチェックする必要がないことを強調したいだけですtext == "success"

+0

こんにちは@BavikShah。助けてくれてありがとう。あなたは、私はあなたがPHPスクリプトを参照していると仮定してサーバー側と言う?私はそのような悩みのために申し訳ありませんが、私はあなたが "成功を印刷する行"という意味をしていません。ありがとう –

+0

@KelvinChong:はい。あなたが正しいです。サーバー側はPHPスクリプトを意味します。あなたは単に "成功"を表示する行をコメントすることができます。 –

+0

こんにちは。私はPHPコードで成功を表示する行を持っていません。私は、フォームの値を電子メールで送信する$ successという変数を持っています。これは、コード内で成功という単語を持つ唯一のものです。私は、成功を記録している行がどこに存在するのかわからない。 –

関連する問題