私はphpスクリプトを持っています:
<?php
$species = $_GET['species']
...//do things to prepare the query
$result = //result of the query.
if (isset($_GET['download'])){
getCSV();
}
function getCSV(){
if ($result->num_rows > 0){
$f = fopen("csvFile", "w");
while ($row = $result->fetch_assoc()){
fputcsv($f, $row);
}
fclose($f);
echo ("downloaded");
}
else{
echo ("no results to download");
}
}
?>
そしていくつかのhtmlコード:
<button type="button" onclick="window.location.href='query.php?download=true'"> Click to download as csv file </button>
php スクリプトと html コードの両方が同じファイル query.php に存在します。phpスクリプトは別の場所からも呼び出され、「種」のGETリクエストがそれに送信されます(その他にもいくつかありますが、ここに含めることはしませんでした)。
ボタンをクリックしたときに getCSV 関数を呼び出したいと思います。ページを更新したくないので、とにかく ajax と jquery を使用する必要があることを認識しています (また、この目的で ajax を使用することについて以前に多くの質問が寄せられていることも認識しています)。ただし、php スクリプトには、$_GET['species']
およびその他のデータを渡す必要があるため、ボタンをクリックすると (ajax を使用する場合と同様に)、他の GET 変数が渡されないため、「種」GET 変数が失われます。ボタンでquery.phpへ。したがって、クエリが間違って入力され、getCSV 関数が無駄なデータに対して呼び出されます。
getCSV() 関数は query.php から呼び出されます。呼び出し時に、ページの URL にアクセスし、それを操作して、「ダウンロード」以外の他の GET 変数 (「種」など) が何であるかを判断することができます。私はかなりの数の変数を持っているので、これをしなくても関数を呼び出すことは可能ですか?
前もって感謝します。