Количество приращений (переменная ajax) на 4 при нажатии кнопки, передайте его php script

#javascript #php #jquery #ajax

#javascript #php #jquery #ajax

Вопрос:

Я пытаюсь установить переменной в AJAX значение 4 при каждом нажатии кнопки. Это обновление выполняется только один раз. Было интересно, как я могу заставить его постоянно работать.

index.php — AJAX

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
  $(document).ready(function(){
    var logCount = 4;
    $("#showMore").click(function(){
      logCount = logCount   4;
      $("#showAuditLogs").load("inc/loadLogs.php", {
        logCount: logCount
      });
    });
  });
</script>
  

index.php — HTML и PHP код

 <div id="showAuditLogs">
          <?php

            $logs = DB::query('SELECT * FROM auditlog ORDER BY id DESC LIMIT 4');
            foreach($logs as $l){
              $action = $l['action'];
              echo "<p class='card-text'>$action</a></p><hr style='background-color: white;'>";
            }

          ?>
          <button style='background-color: #55555F; border-color: #55555F; width: 100%;' type='button' class='btn btn-secondary btn-block' id="showMore">Show more</button>
  

loadLogs.php

 <?php

 include 'database.php';

  $logCount = $_POST['logCount'];

  $logs = DB::query("SELECT * FROM auditlog ORDER BY id DESC LIMIT $logCount");
  foreach($logs as $l){
    $action = $l['action'];
    echo "<p class='card-text'>$action</a></p><hr style='background-color: white;'>";
  }
  echo "<button style='background-color: #55555F; border-color: #55555F; width: 100%;' type='button' class='btn btn-secondary btn-block' id='showMore'>Show more</button>";

?>
  

Комментарии:

1. проверьте смещение ПРЕДЕЛА, подсчитайте; в loadLogs.php

Ответ №1:

Если вы добавите элемент / динамический элемент, $(«#id»).click(функция(){ прослушиватели событий не будут работать должным образом.

Вы должны использовать on / live, пример ниже

 $( "#id" ).on( "click", function() {

  

Я попробовал это самостоятельно, у меня все работает нормально.
Но, к сожалению, метод live () устарел в версии jQuery 1.7 и был удален в версии 1.9. И они советуют использовать вместо него метод on ().

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
<script>
  $(document).ready(function(){
    var logCount = 4;
    $("#showMore").live('click', function(){
      logCount = logCount   4;
      $("#showAuditLogs").val(logCount);
      $(".content").html("<button id='showMore'>Show More</button>");
    });
  });
</script>
<div>
<button id="showMore">Show More</button>
<input id="showAuditLogs" />
<div class="content"></div>

</div>
  

Комментарии:

1. @DMishra вы знаете, как я могу это сделать?

2. $(документ). готово(функция () { var logCount = 4; $(«#ShowMore»).click(функция () { logCount = logCount 4; var toSend = { logCount: logCount} $(«#showAuditLogs»).load(«inc/loadLogs.php «, чтобы отправить); }); }); Здесь все в порядке.