Вызов функции 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
}
}
?>
Название статьи доступно на сайте. Перед написанием вашего поиска.
Я сказал ему просто, вы можете настроить свою систему.
С УВАЖЕНИЕМ.