Функция вызываемая функцией в AJAX структуре

Рейтинг: 0Ответов: 1Опубликовано: 01.05.2015

Есть три файла 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 - будет тоже самое.

Ответы

▲ 1Принят

Попробуйте так

<a class="btn">GetInfo</a>
<script>
//...
function startLoad() {
  if (startLoad.called === undefined) {
    startLoad.called = 1;
    LoadInfo();
  }
}
</script>