これは皆さんにとって奇妙なものです。この問題は、false を返すか、最初の void を返すことに関連していると思います。ボタンがあります……。
<a href="javascript:void(0)" id="csv1" onclick="formexport(vars etc)">Click me<a>
次に、関数内で、渡された変数に基づいてExcelファイルを生成するphpページへのajax呼び出しを行い、完了時にonclickプロパティを削除し、hrefプロパティを新しく作成されたファイルへのリンクに置き換えてからクリックしますボタンを押します。例えば...
function formexport(what, formname, tabid, start, finish, folder){
$filename = ("/clients/" + folder + "/" + $formname + "-" + finish + ".csv");
$.ajax({
url: "formexport.php?rand=" + new Date().valueOf(),
type: "POST",
data: { start: start, finish: finish, tab: tabid, form: formname, filename: $filename }
}).done(function(data){
$('#' + what).attr('href', data).removeAttr('onclick');
setTimeout(function() { $('#' + what).click(); }, 20);
});
return false;
}
"What" は単にボタンの id であるため、再度ターゲットにすることができます。これは、2番目のボタンクリックを除いてすべて機能します。ボタンの上にカーソルを合わせると、href は実際にファイル リンクに変更されましたが、2 回目に自動クリックされることはありません。最初の関数からの false の戻り値なのか、それとも javascript:void(0) なのか、よくわかりません。どんな助けでも大歓迎です。私はスタックの他の場所で、人々がファイルをフレームにロードしたり、ファイルリンクを機能させるためにあらゆる種類のものを読んだりしているのを読みましたが、これはより論理的でクリーンだと思います。