私のサイトのいくつかのファイルダウンロードリンクにパスワード保護を追加しています。これを行うには、パスワードプロンプトを表示するonclickイベントを追加し、成功したらwindow.loaction=/path/to/file_name.zipを使用します。間違ったファイルをダウンロードしていることを除いて、私のコードはほとんど機能しています。id = "2012"のリンクをクリックすると、常に2011.zipがダウンロードされます。
リンクコード:
<a class="download" id="2011" href="#" onclick="promptPassword()">Download the</br> 2011 CD</a>
<a class="download" id="2011" href="#" onclick="promptPassword()">Download the</br> 2011 CD</a>
Javascriptコード:
<script>
$(function promptPassword(){
var tips = $(".validateTips");
function updateTips(t) {
tips
.text(t)
.addClass("ui-state-highlight");
}
$('#password-form').dialog({
autoOpen: false,
height: 300,
width: 350,
modal: true,
buttons: {
"Enter": function(file_name) {
var file_name = $('.download').attr('id');
var password = $('#password').val();
var data_html = "password=" + password;
$.ajax({
type: 'POST',
url: 'password.php',
data: "password=" + password,
success: function(password) {
if(password == 'true'){
window.location = 'downloads/' + file_name + '.zip';
$('#password-form').dialog( 'close' );
}
else {
updateTips("Incorrect Password. Please try again.")
$('#password').addClass("ui-state-error")
return false
}
}
});
}
}
});
$( ".download")
.click(function() {
$("#password-form").dialog( "open" );
});
});
</script>
私の質問は:
promptPassword関数のどこで、promptPasswordイベントをアクティブ化したダウンロードリンクのIDを取得する必要がありますか?私の最善の推測は$('。download')。click関数の間ですが、それをwindow.location ='downloads /'+ file_name+'.zip'に渡すにはどうすればよいでしょうか。これは$('#password-form')。dialog()関数の一部です。