Вызов функции php из кнопки html без обновления страницы

У меня есть скрипт 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, помимо "загрузки" (например, "виды"). Можно ли вызвать функцию без необходимости, поскольку у меня довольно много переменных?

Заранее спасибо.

1 ответ

index.php смотрите здесь

<script src="https://code.jquery.com/jquery-1.9.1.min.js"></script>
<button type="button" id="test"> Click to download as csv file </button>
<input type="hidden" id="val" value="true"> <!--download filename value true and false-->

<script>
    $(function(){
        $('#test').click(function(){

            var val = $("#val").val();

            $.ajax({
                url: 'query.php',
                type: 'GET', // get method
                data: 'download='+val, // download get name + value go
                  success: function(data) {
                    // success
                    alert(data);
                  },
                  error: function(data) {
                    // error
                    alert(data);
                  }
            });
        });
    });
</script>

query.php смотрите здесь

<?php
$species = clean($_GET['download']); // clean func magic quotes fix

 if (empty($species)) {

     echo 'get name not empty';
        //  empty get name print

 }else{
    if ($species == 'true'){
        echo 'download';

        // true query code here...

    }else{
        echo 'no download';

        // error code here
    }
 }
?>

Название статьи доступно на сайте. Перед написанием вашего поиска.

Я сказал ему просто, вы можете настроить свою систему.

С УВАЖЕНИЕМ.

Другие вопросы по тегам