ユーザーが電子メール確認フォーム(AJAX経由で送信されます)に入力した後、AJAX呼び出し応答が成功した場合、現在のブラウザーウィンドウでダウンロードを強制的に開始したいと思います。
メール確認フォームは次のようになります。
<form id="form_download_email" method="POST" action="music_email_verification.php">
<input id="download_email" type="text" tabindex="1" /> <br/>
<a href="javascript:void(0);" id="download_email_button">
Download!
</a>
</form>
「download_email_button」をクリックすると、js/jqueryは次のようになります。
$("#download_email_button").click(function() {
var action = $("#form_download_email").attr('action');
var form_data = {email: $("#download_email").val()};
$.ajax({
type: "POST",
url: action,
data: form_data,
success: function(response){
if(response == 'success'){
window.location.assign('URL to .mp3 or ZIP');
}
}
});
});
response =='success'ブロックが入力され、今のところ、ポップアップウィンドウを起動せずにファイルのダウンロードを強制することがわかった唯一の解決策は(window.openを介して-とにかくChromeによってブロックされます)、windowを使用することです上記のように.location.assign。これは、JSを介してファイルのダウンロードを強制する正しい方法ですか?
ただし、window.location.assignメソッドを使用すると、ダウンロードできるファイルは1つだけであり、2つのmp3で2行に入力しようとすると、機能しません。AKA:
window.location.assign('http://song1.mp3');
window.location.assign('http://song2.mp3');
.mp3 / .zipをダウンロードするためにフォームを送信した後、ユーザーが別のリンクをクリックする必要はありません。すべてJS/jQueryで実行してみたいと思います。
私が考えた最後の方法は、response =='success'で、ブラウザに、mp3を指すhrefを持つドキュメント上の2つの非表示のタグをクリックさせることでした。ただし、「問題は、クリックを介してリンクのデフォルトのアクションをトリガーできないことです」と思われます。jqueryでは、onclick属性だけです。
私はこれをjsで行うべきですか?これを行う方法がない場合、PHPのようなものを試す必要がありますか?
私がそれを行う現在の方法に関する提案や、複数のmp3ファイルをダウンロードする方法に関する推奨事項は役に立ちます!