Функция вызываемая функцией в AJAX структуре
Есть три файла index.php, main.php и info.php
Файл main.php подгружается через index.php - средствами AJAX
В файле main.php есть кнопка, по нажатию которой подгружается файл - info.php (в div с id="info") - средствами AJAX - в котором есть некая информация, извлекаемая из БД MySQL.
Код index.php -
<script type="text/javascript">
function LoadMain() {
$.ajax({
url: 'info.php',
type: 'get',
success: function(response) {
$('body').html(response);
}
});
}
LoadMain();
</script>
Код main.php -
<a class="btn">GetInfo</a>
<div id="info"></div>
<script type="text/javascript">
function LoadInfo() {
setTimeout(function(){
$.ajax({
url: 'info.php',
type: 'get',
success: function(response) {
$('#info').html(response);
}
LoadInfo();
});
}, 1000);
}
</script>
Код info.php -
<?php
//здесь мы берем данные из БД и выводим с помошью echo
?>
Если нажать на кнопку несколько раз, то функция вызовется несколько раз и будет выполняться несколько раз. А нужно только один. Нужно сделать так, чтобы info.php не подгружался каждый раз по нажатию на кнопку, так как в скрипте стоит setTimeout();
Если вынести скрипт LoadInfo(); в файл index.php - будет тоже самое.
Источник: Stack Overflow на русском